]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/rtpdec_ac3.c
Merge commit 'e72605f80bf5cbe32053a554ccc137e0a99cf3dd'
[ffmpeg] / libavformat / rtpdec_ac3.c
index 7454a9af136f8b2085f42ccdf10524f30d4aa2dd..047969f4e879f25e805b617d66bce7bc770d14b5 100644 (file)
@@ -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,