}
break;
- err = cbs_h264_read_filler(ctx, &bc, unit->content);
+ case H264_NAL_FILLER_DATA:
+ {
+ err = ff_cbs_alloc_unit_content(ctx, unit,
+ sizeof(H264RawFiller), NULL);
+ if (err < 0)
+ return err;
+
++ err = cbs_h264_read_filler(ctx, &gbc, unit->content);
+ if (err < 0)
+ return err;
+ }
+ break;
+
default:
return AVERROR(ENOSYS);
}
return 0;
}
- while (bitstream_peek(rw, 8) == 0xff) {
+
+ static int FUNC(filler)(CodedBitstreamContext *ctx, RWContext *rw,
+ H264RawFiller *current)
+ {
+ av_unused int ff_byte = 0xff;
+ int err;
+
+ HEADER("Filler Data");
+
+ CHECK(FUNC(nal_unit_header)(ctx, rw, ¤t->nal_unit_header,
+ 1 << H264_NAL_FILLER_DATA));
+
+ #ifdef READ
++ while (show_bits(rw, 8) == 0xff) {
+ xu(8, ff_byte, ff_byte, 0xff, 0xff);
+ ++current->filler_size;
+ }
+ #else
+ {
+ uint32_t i;
+ for (i = 0; i < current->filler_size; i++)
+ xu(8, ff_byte, ff_byte, 0xff, 0xff);
+ }
+ #endif
+
+ CHECK(FUNC(rbsp_trailing_bits)(ctx, rw));
+
+ return 0;
+ }