mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-04-14 00:58:38 +02:00
cbs_h265: add raw filler encoding
This commit is contained in:
parent
12f158ca8f
commit
b4283f93e1
@ -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, ¤t->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…
x
Reference in New Issue
Block a user