*/
#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;
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,
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;
}
/* 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,
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;
.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,
};