X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Frtpdec_ac3.c;h=047969f4e879f25e805b617d66bce7bc770d14b5;hb=48e3cd4fcd49cd7663f56611e20abb5a860caeaa;hp=7454a9af136f8b2085f42ccdf10524f30d4aa2dd;hpb=80c5dc56104d96eae2d3170720bf5aa4f90467e4;p=ffmpeg diff --git a/libavformat/rtpdec_ac3.c b/libavformat/rtpdec_ac3.c index 7454a9af136..047969f4e87 100644 --- a/libavformat/rtpdec_ac3.c +++ b/libavformat/rtpdec_ac3.c @@ -31,21 +31,12 @@ struct PayloadContext { AVIOContext *fragment; }; -static av_cold int ac3_init(AVFormatContext *s, int st_index, - PayloadContext *data) -{ - if (st_index < 0) - return 0; - s->streams[st_index]->need_parsing = AVSTREAM_PARSE_FULL; - return 0; -} - static PayloadContext *ac3_new_context(void) { return av_mallocz(sizeof(PayloadContext)); } -static inline void free_fragment_if_needed(PayloadContext *data) +static void free_fragment(PayloadContext *data) { if (data->fragment) { uint8_t *p; @@ -57,14 +48,14 @@ static inline void free_fragment_if_needed(PayloadContext *data) static void ac3_free_context(PayloadContext *data) { - free_fragment_if_needed(data); + free_fragment(data); av_free(data); } static int ac3_handle_packet(AVFormatContext *ctx, PayloadContext *data, - AVStream *st, AVPacket *pkt, uint32_t *timestamp, - const uint8_t *buf, int len, uint16_t seq, - int flags) + AVStream *st, AVPacket *pkt, uint32_t *timestamp, + const uint8_t *buf, int len, uint16_t seq, + int flags) { unsigned frame_type; unsigned nr_frames; @@ -97,7 +88,7 @@ static int ac3_handle_packet(AVFormatContext *ctx, PayloadContext *data, case 1: case 2: /* First fragment */ - free_fragment_if_needed(data); + free_fragment(data); data->last_frame = 1; data->nr_frames = nr_frames; @@ -117,7 +108,7 @@ static int ac3_handle_packet(AVFormatContext *ctx, PayloadContext *data, } if (nr_frames != data->nr_frames || data->timestamp != *timestamp) { - free_fragment_if_needed(data); + free_fragment(data); av_log(ctx, AV_LOG_ERROR, "Invalid packet received\n"); return AVERROR_INVALIDDATA; } @@ -130,7 +121,7 @@ static int ac3_handle_packet(AVFormatContext *ctx, PayloadContext *data, return AVERROR(EAGAIN); if (data->last_frame != data->nr_frames) { - free_fragment_if_needed(data); + free_fragment(data); av_log(ctx, AV_LOG_ERROR, "Missed %d packets\n", data->nr_frames - data->last_frame); return AVERROR_INVALIDDATA; @@ -139,7 +130,7 @@ static int ac3_handle_packet(AVFormatContext *ctx, PayloadContext *data, err = ff_rtp_finalize_packet(pkt, &data->fragment, st->index); if (err < 0) { av_log(ctx, AV_LOG_ERROR, - "Error occurred when getting fragment buffer."); + "Error occurred when getting fragment buffer.\n"); return err; } @@ -150,7 +141,7 @@ RTPDynamicProtocolHandler ff_ac3_dynamic_handler = { .enc_name = "ac3", .codec_type = AVMEDIA_TYPE_AUDIO, .codec_id = AV_CODEC_ID_AC3, - .init = ac3_init, + .need_parsing = AVSTREAM_PARSE_FULL, .alloc = ac3_new_context, .free = ac3_free_context, .parse_packet = ac3_handle_packet,