cbs_h265: add raw filler encoding

release/7.1
Dave Airlie 2 years ago committed by Lynne
parent 12f158ca8f
commit b4283f93e1
No known key found for this signature in database
GPG Key ID: A2FEA5F03F034464
  1. 17
      libavcodec/cbs_h2645.c
  2. 6
      libavcodec/cbs_h265.h
  3. 29
      libavcodec/cbs_h265_syntax_template.c

@ -1055,6 +1055,14 @@ static int cbs_h265_read_nal_unit(CodedBitstreamContext *ctx,
} }
break; break;
case HEVC_NAL_FD_NUT:
{
err = cbs_h265_read_filler(ctx, &gbc, unit->content);
if (err < 0)
return err;
}
break;
case HEVC_NAL_SEI_PREFIX: case HEVC_NAL_SEI_PREFIX:
case HEVC_NAL_SEI_SUFFIX: case HEVC_NAL_SEI_SUFFIX:
{ {
@ -1497,6 +1505,14 @@ static int cbs_h265_write_nal_unit(CodedBitstreamContext *ctx,
} }
break; break;
case HEVC_NAL_FD_NUT:
{
err = cbs_h265_write_filler(ctx, pbc, unit->content);
if (err < 0)
return err;
}
break;
case HEVC_NAL_SEI_PREFIX: case HEVC_NAL_SEI_PREFIX:
case HEVC_NAL_SEI_SUFFIX: case HEVC_NAL_SEI_SUFFIX:
{ {
@ -2006,6 +2022,7 @@ static const CodedBitstreamUnitTypeDescriptor cbs_h265_unit_types[] = {
CBS_UNIT_TYPE_INTERNAL_REF(HEVC_NAL_PPS, H265RawPPS, extension_data.data), CBS_UNIT_TYPE_INTERNAL_REF(HEVC_NAL_PPS, H265RawPPS, extension_data.data),
CBS_UNIT_TYPE_POD(HEVC_NAL_AUD, H265RawAUD), CBS_UNIT_TYPE_POD(HEVC_NAL_AUD, H265RawAUD),
CBS_UNIT_TYPE_POD(HEVC_NAL_FD_NUT, H265RawFiller),
// Slices of non-IRAP pictures. // Slices of non-IRAP pictures.
CBS_UNIT_RANGE_INTERNAL_REF(HEVC_NAL_TRAIL_N, HEVC_NAL_RASL_R, CBS_UNIT_RANGE_INTERNAL_REF(HEVC_NAL_TRAIL_N, HEVC_NAL_RASL_R,

@ -741,6 +741,12 @@ typedef struct H265RawSEI {
SEIRawMessageList message_list; SEIRawMessageList message_list;
} H265RawSEI; } H265RawSEI;
typedef struct H265RawFiller {
H265RawNALUnitHeader nal_unit_header;
uint32_t filler_size;
} H265RawFiller;
typedef struct CodedBitstreamH265Context { typedef struct CodedBitstreamH265Context {
// Reader/writer context in common with the H.264 implementation. // Reader/writer context in common with the H.264 implementation.
CodedBitstreamH2645Context common; CodedBitstreamH2645Context common;

@ -2364,3 +2364,32 @@ static int FUNC(sei)(CodedBitstreamContext *ctx, RWContext *rw,
return 0; return 0;
} }
static int FUNC(filler)(CodedBitstreamContext *ctx, RWContext *rw,
H265RawFiller *current)
{
int err;
HEADER("Filler Data");
CHECK(FUNC(nal_unit_header)(ctx, rw, &current->nal_unit_header,
HEVC_NAL_FD_NUT));
#ifdef READ
while (show_bits(rw, 8) == 0xff) {
fixed(8, ff_byte, 0xff);
++current->filler_size;
}
#else
{
uint32_t i;
for (i = 0; i < current->filler_size; i++)
fixed(8, ff_byte, 0xff);
}
#endif
CHECK(FUNC(rbsp_trailing_bits)(ctx, rw));
return 0;
}

Loading…
Cancel
Save