diff mbox

[FFmpeg-devel] avformat/subfile: allow to extract till EOF

Message ID b86a8c78-4330-13a6-7d0b-bb187b31f515@gmail.com
State Accepted
Commit e75fe0ef213074381c09e074f1f9619012f1ffad
Headers show

Commit Message

Gyan Nov. 15, 2017, 12:10 p.m. UTC
Disregard patch in first message. Didn't remove residue of aborted doc 
change earlier.

Regards,
Gyan
From 418879680f6d009b37aea29f667a5df142a83f83 Mon Sep 17 00:00:00 2001
From: Gyan Doshi <gyandoshi@gmail.com>
Date: Wed, 15 Nov 2017 17:36:19 +0530
Subject: [PATCH] avformat/subfile: allow to extract till EOF

Users can set end offset as 0 to extract till end of file.
Tested locally and documented.
---
 doc/protocols.texi    | 6 ++++++
 libavformat/subfile.c | 3 +++
 2 files changed, 9 insertions(+)

Comments

Gyan Nov. 19, 2017, 4:28 a.m. UTC | #1
Ping.
Nicolas George Nov. 19, 2017, 6:52 p.m. UTC | #2
Le quintidi 25 brumaire, an CCXXVI, Gyan Doshi a écrit :
> Disregard patch in first message. Didn't remove residue of aborted doc
> change earlier.

Patch applied. Thanks.

Regards,
diff mbox

Patch

diff --git a/doc/protocols.texi b/doc/protocols.texi
index a7968ff56e..f50a49b789 100644
--- a/doc/protocols.texi
+++ b/doc/protocols.texi
@@ -1186,6 +1186,7 @@  Accepted options:
 Start offset of the extracted segment, in bytes.
 @item end
 End offset of the extracted segment, in bytes.
+If set to 0, extract till end of file.
 @end table
 
 Examples:
@@ -1201,6 +1202,11 @@  Play an AVI file directly from a TAR archive:
 subfile,,start,183241728,end,366490624,,:archive.tar
 @end example
 
+Play a MPEG-TS file from start offset till end:
+@example
+subfile,,start,32815239,end,0,,:video.ts
+@end example
+
 @section tee
 
 Writes the output to multiple protocols. The individual outputs are separated
diff --git a/libavformat/subfile.c b/libavformat/subfile.c
index 497cf85211..b527f2bee1 100644
--- a/libavformat/subfile.c
+++ b/libavformat/subfile.c
@@ -72,6 +72,9 @@  static int subfile_open(URLContext *h, const char *filename, int flags,
     SubfileContext *c = h->priv_data;
     int ret;
 
+    if (!c->end)
+        c->end = INT64_MAX;
+
     if (c->end <= c->start) {
         av_log(h, AV_LOG_ERROR, "end before start\n");
         return AVERROR(EINVAL);