[FFmpeg-devel] [PATCH 15/16] mpegts: fix return value when enough ts packets have been parsed or when the first PMT has been seen.
Baptiste Coudurier
baptiste.coudurier at gmail.com
Sun Oct 9 22:44:38 CEST 2011
Hi Laurent,
On 10/8/11 2:40 PM, fenrir at elivagar.org wrote:
> From: Laurent Aimar<fenrir at videolan.org>
>
> ---
> libavformat/mpegts.c | 12 ++++++++----
> 1 files changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
> index 02f0d56..f3d8b35 100644
> --- a/libavformat/mpegts.c
> +++ b/libavformat/mpegts.c
> @@ -1106,7 +1106,7 @@ static void pmt_cb(MpegTSFilter *filter, const uint8_t *section, int section_len
>
> // stop parsing after pmt, we found header
> if (!ts->stream->nb_streams)
> - ts->stop_parse = 1;
> + ts->stop_parse = 2;
>
> for(;;) {
> st = 0;
> @@ -1462,11 +1462,15 @@ static int handle_packets(MpegTSContext *ts, int nb_packets)
> ts->stop_parse = 0;
> packet_num = 0;
> for(;;) {
> - if (ts->stop_parse>0)
> - break;
> packet_num++;
> - if (nb_packets != 0&& packet_num>= nb_packets)
> + if (nb_packets != 0&& packet_num>= nb_packets ||
> + ts->stop_parse> 1) {
> + ret = AVERROR(EAGAIN);
> break;
> + }
> + if (ts->stop_parse> 0)
> + break;
> +
> ret = read_packet(s, packet, ts->raw_packet_size);
> if (ret != 0)
> break;
I'm a bit confused by the change. What's the intended goal ?
pmt_cb setting stop_parse = 1 is only when no streams are present yet,
ie we did not parse PMT yet, this should only happen during init.
Is that triggered in other scenario ?
--
Baptiste COUDURIER
Key fingerprint 8D77134D20CC9220201FC5DB0AC9325C5C1ABAAA
FFmpeg maintainer http://www.ffmpeg.org
More information about the ffmpeg-devel
mailing list