Re: [FFmpeg-devel] [PATCH v2 02/11] cbs: Ensure that reference fields always follow the associated pointer

2019-05-20 Thread myp...@gmail.com
On Tue, May 21, 2019 at 7:08 AM Mark Thompson  wrote:
>
> Hvaing these together allows us to find both pointers given the address
> of only one of them.
> ---
>  libavcodec/cbs_av1.h   |  6 +++---
>  libavcodec/cbs_h264.h  | 18 +-
>  libavcodec/cbs_h265.h  | 16 
>  libavcodec/cbs_jpeg.h  |  2 +-
>  libavcodec/cbs_mpeg2.h | 10 +-
>  libavcodec/cbs_vp9.h   |  2 +-
>  6 files changed, 27 insertions(+), 27 deletions(-)
>
> diff --git a/libavcodec/cbs_av1.h b/libavcodec/cbs_av1.h
> index 1fb668ada4..a87cbc030b 100644
> --- a/libavcodec/cbs_av1.h
> +++ b/libavcodec/cbs_av1.h
> @@ -284,8 +284,8 @@ typedef struct AV1RawFrameHeader {
>
>  typedef struct AV1RawTileData {
>  uint8_t *data;
> -size_t   data_size;
>  AVBufferRef *data_ref;
> +size_t   data_size;
>  } AV1RawTileData;
>
>  typedef struct AV1RawTileGroup {
> @@ -346,8 +346,8 @@ typedef struct AV1RawMetadataITUTT35 {
>  uint8_t itu_t_t35_country_code_extension_byte;
>
>  uint8_t *payload;
> -size_t   payload_size;
>  AVBufferRef *payload_ref;
> +size_t   payload_size;
>  } AV1RawMetadataITUTT35;
>
>  typedef struct AV1RawMetadataTimecode {
> @@ -379,8 +379,8 @@ typedef struct AV1RawMetadata {
>
>  typedef struct AV1RawPadding {
>  uint8_t *payload;
> -size_t   payload_size;
>  AVBufferRef *payload_ref;
> +size_t   payload_size;
>  } AV1RawPadding;
>
>
> diff --git a/libavcodec/cbs_h264.h b/libavcodec/cbs_h264.h
> index cc46eeb3b0..57a9782cc9 100644
> --- a/libavcodec/cbs_h264.h
> +++ b/libavcodec/cbs_h264.h
> @@ -277,16 +277,16 @@ typedef struct H264RawSEIPanScanRect {
>  typedef struct H264RawSEIUserDataRegistered {
>  uint8_t itu_t_t35_country_code;
>  uint8_t itu_t_t35_country_code_extension_byte;
> -uint8_t *data;
> -size_t data_length;
> +uint8_t *data;
>  AVBufferRef *data_ref;
> +size_t   data_length;
>  } H264RawSEIUserDataRegistered;
>
>  typedef struct H264RawSEIUserDataUnregistered {
>  uint8_t uuid_iso_iec_11578[16];
> -uint8_t *data;
> -size_t data_length;
> +uint8_t *data;
>  AVBufferRef *data_ref;
> +size_t   data_length;
>  } H264RawSEIUserDataUnregistered;
>
>  typedef struct H264RawSEIRecoveryPoint {
> @@ -328,9 +328,9 @@ typedef struct H264RawSEIPayload {
>  H264RawSEIDisplayOrientation display_orientation;
>  H264RawSEIMasteringDisplayColourVolume 
> mastering_display_colour_volume;
>  struct {
> -uint8_t *data;
> -size_t data_length;
> +uint8_t *data;
>  AVBufferRef *data_ref;
> +size_t   data_length;
>  } other;
>  } payload;
>  } H264RawSEIPayload;
> @@ -423,10 +423,10 @@ typedef struct H264RawSliceHeader {
>  typedef struct H264RawSlice {
>  H264RawSliceHeader header;
>
> -uint8_t *data;
> -size_t   data_size;
> -int  data_bit_start;
> +uint8_t *data;
>  AVBufferRef *data_ref;
> +size_t   data_size;
> +int  data_bit_start;
>  } H264RawSlice;
>
>  typedef struct H264RawFiller {
> diff --git a/libavcodec/cbs_h265.h b/libavcodec/cbs_h265.h
> index c9bc90187b..5cab93c828 100644
> --- a/libavcodec/cbs_h265.h
> +++ b/libavcodec/cbs_h265.h
> @@ -184,8 +184,8 @@ typedef struct H265RawVUI {
>
>  typedef struct H265RawPSExtensionData {
>  uint8_t *data;
> -size_t bit_length;
>  AVBufferRef *data_ref;
> +size_t bit_length;
>  } H265RawPSExtensionData;
>
>  typedef struct H265RawVPS {
> @@ -541,10 +541,10 @@ typedef struct  H265RawSliceHeader {
>  typedef struct H265RawSlice {
>  H265RawSliceHeader header;
>
> -uint8_t *data;
> -size_t   data_size;
> -int  data_bit_start;
> +uint8_t *data;
>  AVBufferRef *data_ref;
> +size_t   data_size;
> +int  data_bit_start;
>  } H265RawSlice;
>
>
> @@ -600,15 +600,15 @@ typedef struct H265RawSEIUserDataRegistered {
>  uint8_t itu_t_t35_country_code;
>  uint8_t itu_t_t35_country_code_extension_byte;
>  uint8_t *data;
> -size_t   data_length;
>  AVBufferRef *data_ref;
> +size_t   data_length;
>  } H265RawSEIUserDataRegistered;
>
>  typedef struct H265RawSEIUserDataUnregistered {
>  uint8_t uuid_iso_iec_11578[16];
>  uint8_t *data;
> -size_t   data_length;
>  AVBufferRef *data_ref;
> +size_t   data_length;
>  } H265RawSEIUserDataUnregistered;
>
>  typedef struct H265RawSEIRecoveryPoint {
> @@ -698,9 +698,9 @@ typedef struct H265RawSEIPayload {
>  H265RawSEIAlternativeTransferCharacteristics
>  alternative_transfer_characteristics;
>  struct {
> -uint8_t *data;
> -size_t data_length;
> +uint8_t *data;
>  AVBufferRef *data_ref;
> +size_t   data_length;
>  } other;
>  } payload;
>  } H265RawSEIPayload;
> diff --git a/libavcodec/

[FFmpeg-devel] [PATCH v2 02/11] cbs: Ensure that reference fields always follow the associated pointer

2019-05-20 Thread Mark Thompson
Hvaing these together allows us to find both pointers given the address
of only one of them.
---
 libavcodec/cbs_av1.h   |  6 +++---
 libavcodec/cbs_h264.h  | 18 +-
 libavcodec/cbs_h265.h  | 16 
 libavcodec/cbs_jpeg.h  |  2 +-
 libavcodec/cbs_mpeg2.h | 10 +-
 libavcodec/cbs_vp9.h   |  2 +-
 6 files changed, 27 insertions(+), 27 deletions(-)

diff --git a/libavcodec/cbs_av1.h b/libavcodec/cbs_av1.h
index 1fb668ada4..a87cbc030b 100644
--- a/libavcodec/cbs_av1.h
+++ b/libavcodec/cbs_av1.h
@@ -284,8 +284,8 @@ typedef struct AV1RawFrameHeader {
 
 typedef struct AV1RawTileData {
 uint8_t *data;
-size_t   data_size;
 AVBufferRef *data_ref;
+size_t   data_size;
 } AV1RawTileData;
 
 typedef struct AV1RawTileGroup {
@@ -346,8 +346,8 @@ typedef struct AV1RawMetadataITUTT35 {
 uint8_t itu_t_t35_country_code_extension_byte;
 
 uint8_t *payload;
-size_t   payload_size;
 AVBufferRef *payload_ref;
+size_t   payload_size;
 } AV1RawMetadataITUTT35;
 
 typedef struct AV1RawMetadataTimecode {
@@ -379,8 +379,8 @@ typedef struct AV1RawMetadata {
 
 typedef struct AV1RawPadding {
 uint8_t *payload;
-size_t   payload_size;
 AVBufferRef *payload_ref;
+size_t   payload_size;
 } AV1RawPadding;
 
 
diff --git a/libavcodec/cbs_h264.h b/libavcodec/cbs_h264.h
index cc46eeb3b0..57a9782cc9 100644
--- a/libavcodec/cbs_h264.h
+++ b/libavcodec/cbs_h264.h
@@ -277,16 +277,16 @@ typedef struct H264RawSEIPanScanRect {
 typedef struct H264RawSEIUserDataRegistered {
 uint8_t itu_t_t35_country_code;
 uint8_t itu_t_t35_country_code_extension_byte;
-uint8_t *data;
-size_t data_length;
+uint8_t *data;
 AVBufferRef *data_ref;
+size_t   data_length;
 } H264RawSEIUserDataRegistered;
 
 typedef struct H264RawSEIUserDataUnregistered {
 uint8_t uuid_iso_iec_11578[16];
-uint8_t *data;
-size_t data_length;
+uint8_t *data;
 AVBufferRef *data_ref;
+size_t   data_length;
 } H264RawSEIUserDataUnregistered;
 
 typedef struct H264RawSEIRecoveryPoint {
@@ -328,9 +328,9 @@ typedef struct H264RawSEIPayload {
 H264RawSEIDisplayOrientation display_orientation;
 H264RawSEIMasteringDisplayColourVolume mastering_display_colour_volume;
 struct {
-uint8_t *data;
-size_t data_length;
+uint8_t *data;
 AVBufferRef *data_ref;
+size_t   data_length;
 } other;
 } payload;
 } H264RawSEIPayload;
@@ -423,10 +423,10 @@ typedef struct H264RawSliceHeader {
 typedef struct H264RawSlice {
 H264RawSliceHeader header;
 
-uint8_t *data;
-size_t   data_size;
-int  data_bit_start;
+uint8_t *data;
 AVBufferRef *data_ref;
+size_t   data_size;
+int  data_bit_start;
 } H264RawSlice;
 
 typedef struct H264RawFiller {
diff --git a/libavcodec/cbs_h265.h b/libavcodec/cbs_h265.h
index c9bc90187b..5cab93c828 100644
--- a/libavcodec/cbs_h265.h
+++ b/libavcodec/cbs_h265.h
@@ -184,8 +184,8 @@ typedef struct H265RawVUI {
 
 typedef struct H265RawPSExtensionData {
 uint8_t *data;
-size_t bit_length;
 AVBufferRef *data_ref;
+size_t bit_length;
 } H265RawPSExtensionData;
 
 typedef struct H265RawVPS {
@@ -541,10 +541,10 @@ typedef struct  H265RawSliceHeader {
 typedef struct H265RawSlice {
 H265RawSliceHeader header;
 
-uint8_t *data;
-size_t   data_size;
-int  data_bit_start;
+uint8_t *data;
 AVBufferRef *data_ref;
+size_t   data_size;
+int  data_bit_start;
 } H265RawSlice;
 
 
@@ -600,15 +600,15 @@ typedef struct H265RawSEIUserDataRegistered {
 uint8_t itu_t_t35_country_code;
 uint8_t itu_t_t35_country_code_extension_byte;
 uint8_t *data;
-size_t   data_length;
 AVBufferRef *data_ref;
+size_t   data_length;
 } H265RawSEIUserDataRegistered;
 
 typedef struct H265RawSEIUserDataUnregistered {
 uint8_t uuid_iso_iec_11578[16];
 uint8_t *data;
-size_t   data_length;
 AVBufferRef *data_ref;
+size_t   data_length;
 } H265RawSEIUserDataUnregistered;
 
 typedef struct H265RawSEIRecoveryPoint {
@@ -698,9 +698,9 @@ typedef struct H265RawSEIPayload {
 H265RawSEIAlternativeTransferCharacteristics
 alternative_transfer_characteristics;
 struct {
-uint8_t *data;
-size_t data_length;
+uint8_t *data;
 AVBufferRef *data_ref;
+size_t   data_length;
 } other;
 } payload;
 } H265RawSEIPayload;
diff --git a/libavcodec/cbs_jpeg.h b/libavcodec/cbs_jpeg.h
index 913d3f90f6..d51c83845b 100644
--- a/libavcodec/cbs_jpeg.h
+++ b/libavcodec/cbs_jpeg.h
@@ -80,8 +80,8 @@ typedef struct JPEGRawScanHeader {
 typedef struct JPEGRawScan {
 JPEGRawScanHeader header;
 uint8_t  *data;
-size_tdata_size;
 AVBufferRef  *data_