]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/rtpdec_h263_rfc2190.c
vf_hwmap: Properly free a locally derived device
[ffmpeg] / libavformat / rtpdec_h263_rfc2190.c
index e45778108b1be549749b85e130ce3b2a1651c2ff..5744d71da0fe6aa4f01790490d0490e028faf1d0 100644 (file)
  */
 
 #include "avformat.h"
+#include "avio_internal.h"
 #include "rtpdec_formats.h"
 #include "libavutil/attributes.h"
 #include "libavutil/intreadwrite.h"
-#include "libavcodec/get_bits.h"
+
+#include "libavcodec/bitstream.h"
 
 struct PayloadContext {
     AVIOContext *buf;
@@ -39,13 +41,9 @@ struct PayloadContext {
     int          newformat;
 };
 
-static void h263_free_context(PayloadContext *data)
+static void h263_close_context(PayloadContext *data)
 {
-    if (data->buf) {
-        uint8_t *p;
-        avio_close_dyn_buf(data->buf, &p);
-        av_free(p);
-    }
+    ffio_free_dyn_buf(&data->buf);
 }
 
 static int h263_handle_packet(AVFormatContext *ctx, PayloadContext *data,
@@ -63,10 +61,7 @@ static int h263_handle_packet(AVFormatContext *ctx, PayloadContext *data,
 
     if (data->buf && data->timestamp != *timestamp) {
         /* Dropping old buffered, unfinished data */
-        uint8_t *p;
-        avio_close_dyn_buf(data->buf, &p);
-        av_free(p);
-        data->buf = NULL;
+        ffio_free_dyn_buf(&data->buf);
         data->endbyte_bits = 0;
     }
 
@@ -113,7 +108,7 @@ static int h263_handle_packet(AVFormatContext *ctx, PayloadContext *data,
             /* Invalid src for this format, and bits that should be zero
              * according to RFC 2190 aren't zero. */
             av_log(ctx, AV_LOG_WARNING,
-                   "Interpreting H263 RTP data as RFC 2429/4629 even though "
+                   "Interpreting H.263 RTP data as RFC 2429/4629 even though "
                    "signalled with a static payload type.\n");
             data->newformat = 1;
             return ff_h263_handle_packet(ctx, data, st, pkt, timestamp, buf,
@@ -147,18 +142,18 @@ static int h263_handle_packet(AVFormatContext *ctx, PayloadContext *data,
             avio_w8(data->buf, data->endbyte);
         } else {
             /* Start/end skip bits not matching - missed packets? */
-            GetBitContext gb;
-            init_get_bits(&gb, buf, len*8 - ebit);
-            skip_bits(&gb, sbit);
+            BitstreamContext bc;
+            bitstream_init(&bc, buf, len * 8 - ebit);
+            bitstream_skip(&bc, sbit);
             if (data->endbyte_bits) {
-                data->endbyte |= get_bits(&gb, 8 - data->endbyte_bits);
+                data->endbyte |= bitstream_read(&bc, 8 - data->endbyte_bits);
                 avio_w8(data->buf, data->endbyte);
             }
-            while (get_bits_left(&gb) >= 8)
-                avio_w8(data->buf, get_bits(&gb, 8));
-            data->endbyte_bits = get_bits_left(&gb);
+            while (bitstream_bits_left(&bc) >= 8)
+                avio_w8(data->buf, bitstream_read(&bc, 8));
+            data->endbyte_bits = bitstream_bits_left(&bc);
             if (data->endbyte_bits)
-                data->endbyte = get_bits(&gb, data->endbyte_bits) <<
+                data->endbyte = bitstream_read(&bc, data->endbyte_bits) <<
                                 (8 - data->endbyte_bits);
             ebit = 0;
             len = 0;
@@ -195,6 +190,6 @@ RTPDynamicProtocolHandler ff_h263_rfc2190_dynamic_handler = {
     .need_parsing      = AVSTREAM_PARSE_FULL,
     .parse_packet      = h263_handle_packet,
     .priv_data_size    = sizeof(PayloadContext),
-    .free              = h263_free_context,
+    .close             = h263_close_context,
     .static_payload_id = 34,
 };