[FFmpeg-cvslog] cbs: Add an explicit type for coded bitstream unit types
Mark Thompson
git at videolan.org
Wed Feb 21 23:33:18 EET 2018
ffmpeg | branch: master | Mark Thompson <sw at jkqxz.net> | Thu Nov 9 01:04:02 2017 +0000| [1d12a545ce828eaf4fb37295400008ea37635ab8] | committer: Mark Thompson
cbs: Add an explicit type for coded bitstream unit types
Also fix conversion specifiers used for the unit type.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=1d12a545ce828eaf4fb37295400008ea37635ab8
---
libavcodec/cbs.c | 12 +++++++-----
libavcodec/cbs.h | 19 +++++++++++++++----
libavcodec/cbs_h2645.c | 2 +-
libavcodec/cbs_mpeg2.c | 4 ++--
4 files changed, 25 insertions(+), 12 deletions(-)
diff --git a/libavcodec/cbs.c b/libavcodec/cbs.c
index fd9baa2997..e5819afce3 100644
--- a/libavcodec/cbs.c
+++ b/libavcodec/cbs.c
@@ -137,10 +137,10 @@ static int cbs_read_fragment_content(CodedBitstreamContext *ctx,
if (err == AVERROR(ENOSYS)) {
av_log(ctx->log_ctx, AV_LOG_WARNING,
"Decomposition unimplemented for unit %d "
- "(type %d).\n", i, frag->units[i].type);
+ "(type %"PRIu32").\n", i, frag->units[i].type);
} else if (err < 0) {
av_log(ctx->log_ctx, AV_LOG_ERROR, "Failed to read unit %d "
- "(type %d).\n", i, frag->units[i].type);
+ "(type %"PRIu32").\n", i, frag->units[i].type);
return err;
}
}
@@ -225,7 +225,7 @@ int ff_cbs_write_fragment_data(CodedBitstreamContext *ctx,
err = ctx->codec->write_unit(ctx, &frag->units[i]);
if (err < 0) {
av_log(ctx->log_ctx, AV_LOG_ERROR, "Failed to write unit %d "
- "(type %d).\n", i, frag->units[i].type);
+ "(type %"PRIu32").\n", i, frag->units[i].type);
return err;
}
}
@@ -421,7 +421,8 @@ static int cbs_insert_unit(CodedBitstreamContext *ctx,
int ff_cbs_insert_unit_content(CodedBitstreamContext *ctx,
CodedBitstreamFragment *frag,
- int position, uint32_t type,
+ int position,
+ CodedBitstreamUnitType type,
void *content)
{
int err;
@@ -443,7 +444,8 @@ int ff_cbs_insert_unit_content(CodedBitstreamContext *ctx,
int ff_cbs_insert_unit_data(CodedBitstreamContext *ctx,
CodedBitstreamFragment *frag,
- int position, uint32_t type,
+ int position,
+ CodedBitstreamUnitType type,
uint8_t *data, size_t data_size)
{
int err;
diff --git a/libavcodec/cbs.h b/libavcodec/cbs.h
index 34ee78be32..85c7b55577 100644
--- a/libavcodec/cbs.h
+++ b/libavcodec/cbs.h
@@ -28,6 +28,15 @@
struct CodedBitstreamType;
/**
+ * The codec-specific type of a bitstream unit.
+ *
+ * H.264 / AVC: nal_unit_type
+ * H.265 / HEVC: nal_unit_type
+ * MPEG-2: start code value (without prefix)
+ */
+typedef uint32_t CodedBitstreamUnitType;
+
+/**
* Coded bitstream unit structure.
*
* A bitstream unit the the smallest element of a bitstream which
@@ -40,7 +49,7 @@ typedef struct CodedBitstreamUnit {
/**
* Codec-specific type of this unit.
*/
- uint32_t type;
+ CodedBitstreamUnitType type;
/**
* Pointer to the bitstream form of this unit.
@@ -149,7 +158,7 @@ typedef struct CodedBitstreamContext {
* Types not in this list will be available in bitstream form only.
* If NULL, all supported types will be decomposed.
*/
- uint32_t *decompose_unit_types;
+ CodedBitstreamUnitType *decompose_unit_types;
/**
* Length of the decompose_unit_types array.
*/
@@ -250,7 +259,8 @@ void ff_cbs_fragment_uninit(CodedBitstreamContext *ctx,
*/
int ff_cbs_insert_unit_content(CodedBitstreamContext *ctx,
CodedBitstreamFragment *frag,
- int position, uint32_t type,
+ int position,
+ CodedBitstreamUnitType type,
void *content);
/**
@@ -260,7 +270,8 @@ int ff_cbs_insert_unit_content(CodedBitstreamContext *ctx,
*/
int ff_cbs_insert_unit_data(CodedBitstreamContext *ctx,
CodedBitstreamFragment *frag,
- int position, uint32_t type,
+ int position,
+ CodedBitstreamUnitType type,
uint8_t *data, size_t data_size);
/**
diff --git a/libavcodec/cbs_h2645.c b/libavcodec/cbs_h2645.c
index 00eed0f283..e3b5bf618a 100644
--- a/libavcodec/cbs_h2645.c
+++ b/libavcodec/cbs_h2645.c
@@ -1213,7 +1213,7 @@ static int cbs_h265_write_nal_unit(CodedBitstreamContext *ctx,
default:
av_log(ctx->log_ctx, AV_LOG_ERROR, "Write unimplemented for "
- "NAL unit type %d.\n", unit->type);
+ "NAL unit type %"PRIu32".\n", unit->type);
return AVERROR_PATCHWELCOME;
}
diff --git a/libavcodec/cbs_mpeg2.c b/libavcodec/cbs_mpeg2.c
index 54875c2e1c..5956f39335 100644
--- a/libavcodec/cbs_mpeg2.c
+++ b/libavcodec/cbs_mpeg2.c
@@ -220,7 +220,7 @@ static int cbs_mpeg2_read_unit(CodedBitstreamContext *ctx,
START(0xb8, MPEG2RawGroupOfPicturesHeader, group_of_pictures_header);
#undef START
default:
- av_log(ctx->log_ctx, AV_LOG_ERROR, "Unknown start code %02x.\n",
+ av_log(ctx->log_ctx, AV_LOG_ERROR, "Unknown start code %02"PRIx32".\n",
unit->type);
return AVERROR_INVALIDDATA;
}
@@ -248,7 +248,7 @@ static int cbs_mpeg2_write_header(CodedBitstreamContext *ctx,
#undef START
default:
av_log(ctx->log_ctx, AV_LOG_ERROR, "Write unimplemented for start "
- "code %02x.\n", unit->type);
+ "code %02"PRIx32".\n", unit->type);
return AVERROR_PATCHWELCOME;
}
More information about the ffmpeg-cvslog
mailing list