]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/dirac.c
lavc: deprecate unused AVCodecContext.stream_codec_tag
[ffmpeg] / libavcodec / dirac.c
index e11fea761e478a75ed52044d7f31f34badb4de5a..5e13a849fc3475c41c5d9655ac6d8b8b3e16ee62 100644 (file)
  */
 
 #include "libavutil/imgutils.h"
-#include "dirac.h"
+
 #include "avcodec.h"
+#include "dirac.h"
 #include "golomb.h"
+#include "internal.h"
 #include "mpeg12data.h"
 
 // defaults for source parameters
 static const dirac_source_params dirac_source_parameters_defaults[] = {
-    { 640,  480,  2, 0, 0, 1,  1, 640,  480,  0, 0, 1, 0 },
-    { 176,  120,  2, 0, 0, 9,  2, 176,  120,  0, 0, 1, 1 },
-    { 176,  144,  2, 0, 1, 10, 3, 176,  144,  0, 0, 1, 2 },
-    { 352,  240,  2, 0, 0, 9,  2, 352,  240,  0, 0, 1, 1 },
-    { 352,  288,  2, 0, 1, 10, 3, 352,  288,  0, 0, 1, 2 },
-    { 704,  480,  2, 0, 0, 9,  2, 704,  480,  0, 0, 1, 1 },
-    { 704,  576,  2, 0, 1, 10, 3, 704,  576,  0, 0, 1, 2 },
-    { 720,  480,  1, 1, 0, 4,  2, 704,  480,  8, 0, 3, 1 },
-    { 720,  576,  1, 1, 1, 3,  3, 704,  576,  8, 0, 3, 2 },
-
-    { 1280, 720,  1, 0, 1, 7,  1, 1280, 720,  0, 0, 3, 3 },
-    { 1280, 720,  1, 0, 1, 6,  1, 1280, 720,  0, 0, 3, 3 },
-    { 1920, 1080, 1, 1, 1, 4,  1, 1920, 1080, 0, 0, 3, 3 },
-    { 1920, 1080, 1, 1, 1, 3,  1, 1920, 1080, 0, 0, 3, 3 },
-    { 1920, 1080, 1, 0, 1, 7,  1, 1920, 1080, 0, 0, 3, 3 },
-    { 1920, 1080, 1, 0, 1, 6,  1, 1920, 1080, 0, 0, 3, 3 },
-    { 2048, 1080, 0, 0, 1, 2,  1, 2048, 1080, 0, 0, 4, 4 },
-    { 4096, 2160, 0, 0, 1, 2,  1, 4096, 2160, 0, 0, 4, 4 },
-
-    { 3840, 2160, 1, 0, 1, 7,  1, 3840, 2160, 0, 0, 3, 3 },
-    { 3840, 2160, 1, 0, 1, 6,  1, 3840, 2160, 0, 0, 3, 3 },
-    { 7680, 4320, 1, 0, 1, 7,  1, 3840, 2160, 0, 0, 3, 3 },
-    { 7680, 4320, 1, 0, 1, 6,  1, 3840, 2160, 0, 0, 3, 3 },
+    {  640,  480, 2, 0, 0,  1, 1,  640,  480, 0, 0, 1, 0 },
+    {  176,  120, 2, 0, 0,  9, 2,  176,  120, 0, 0, 1, 1 },
+    {  176,  144, 2, 0, 1, 10, 3,  176,  144, 0, 0, 1, 2 },
+    {  352,  240, 2, 0, 0,  9, 2,  352,  240, 0, 0, 1, 1 },
+    {  352,  288, 2, 0, 1, 10, 3,  352,  288, 0, 0, 1, 2 },
+    {  704,  480, 2, 0, 0,  9, 2,  704,  480, 0, 0, 1, 1 },
+    {  704,  576, 2, 0, 1, 10, 3,  704,  576, 0, 0, 1, 2 },
+    {  720,  480, 1, 1, 0,  4, 2,  704,  480, 8, 0, 3, 1 },
+    {  720,  576, 1, 1, 1,  3, 3,  704,  576, 8, 0, 3, 2 },
+
+    { 1280,  720, 1, 0, 1,  7, 1, 1280,  720, 0, 0, 3, 3 },
+    { 1280,  720, 1, 0, 1,  6, 1, 1280,  720, 0, 0, 3, 3 },
+    { 1920, 1080, 1, 1, 1,  4, 1, 1920, 1080, 0, 0, 3, 3 },
+    { 1920, 1080, 1, 1, 1,  3, 1, 1920, 1080, 0, 0, 3, 3 },
+    { 1920, 1080, 1, 0, 1,  7, 1, 1920, 1080, 0, 0, 3, 3 },
+    { 1920, 1080, 1, 0, 1,  6, 1, 1920, 1080, 0, 0, 3, 3 },
+    { 2048, 1080, 0, 0, 1,  2, 1, 2048, 1080, 0, 0, 4, 4 },
+    { 4096, 2160, 0, 0, 1,  2, 1, 4096, 2160, 0, 0, 4, 4 },
+
+    { 3840, 2160, 1, 0, 1,  7, 1, 3840, 2160, 0, 0, 3, 3 },
+    { 3840, 2160, 1, 0, 1,  6, 1, 3840, 2160, 0, 0, 3, 3 },
+    { 7680, 4320, 1, 0, 1,  7, 1, 3840, 2160, 0, 0, 3, 3 },
+    { 7680, 4320, 1, 0, 1,  6, 1, 3840, 2160, 0, 0, 3, 3 },
 };
 
 /* [DIRAC_STD] Table 10.4 - Available preset pixel aspect ratio values */
 static const AVRational dirac_preset_aspect_ratios[] = {
-    {1, 1},
-    {10, 11},
-    {12, 11},
-    {40, 33},
-    {16, 11},
-    {4, 3},
+    {  1,  1 },
+    { 10, 11 },
+    { 12, 11 },
+    { 40, 33 },
+    { 16, 11 },
+    {  4,  3 },
 };
 
 /* [DIRAC_STD] Values 9,10 of 10.3.5 Frame Rate.
  * Table 10.3 Available preset frame rate values
  */
 static const AVRational dirac_frame_rate[] = {
-    {15000, 1001},
-    {25, 2},
+    { 15000, 1001 },
+    {    25,    2 },
 };
 
 /* [DIRAC_STD] This should be equivalent to Table 10.5 Available signal
@@ -82,10 +84,10 @@ static const struct {
     uint8_t             bitdepth;
     enum AVColorRange   color_range;
 } pixel_range_presets[] = {
-    {8,  AVCOL_RANGE_JPEG},
-    {8,  AVCOL_RANGE_MPEG},
-    {10, AVCOL_RANGE_MPEG},
-    {12, AVCOL_RANGE_MPEG},
+    {  8, AVCOL_RANGE_JPEG },
+    {  8, AVCOL_RANGE_MPEG },
+    { 10, AVCOL_RANGE_MPEG },
+    { 12, AVCOL_RANGE_MPEG },
 };
 
 static const enum AVColorPrimaries dirac_primaries[] = {
@@ -117,7 +119,7 @@ static const enum AVPixelFormat dirac_pix_fmt[2][3] = {
 static int parse_source_parameters(AVCodecContext *avctx, GetBitContext *gb,
                                    dirac_source_params *source)
 {
-    AVRational frame_rate = {0,0};
+    AVRational frame_rate = { 0, 0 };
     unsigned luma_depth = 8, luma_offset = 16;
     int idx;
 
@@ -167,16 +169,15 @@ static int parse_source_parameters(AVCodecContext *avctx, GetBitContext *gb,
         if (source->frame_rate_index <= 8)
             frame_rate = ff_mpeg12_frame_rate_tab[source->frame_rate_index];
         else
-             /* [DIRAC_STD] Table 10.3 values 9-10 */
-            frame_rate = dirac_frame_rate[source->frame_rate_index-9];
+            /* [DIRAC_STD] Table 10.3 values 9-10 */
+            frame_rate = dirac_frame_rate[source->frame_rate_index - 9];
     }
-    av_reduce(&avctx->time_base.num, &avctx->time_base.den,
-              frame_rate.den, frame_rate.num, 1<<30);
+    avctx->framerate = frame_rate;
 
     /* [DIRAC_STD] 10.3.6 Pixel Aspect Ratio.
      * pixel_aspect_ratio(video_params) */
     if (get_bits1(gb)) { /* [DIRAC_STD] custom_pixel_aspect_ratio_flag */
-         /* [DIRAC_STD] index */
+        /* [DIRAC_STD] index */
         source->aspect_ratio_index = svq3_get_ue_golomb(gb);
 
         if (source->aspect_ratio_index > 6)
@@ -191,16 +192,16 @@ static int parse_source_parameters(AVCodecContext *avctx, GetBitContext *gb,
      *  aspect ratio values */
     if (source->aspect_ratio_index > 0)
         avctx->sample_aspect_ratio =
-                dirac_preset_aspect_ratios[source->aspect_ratio_index-1];
+            dirac_preset_aspect_ratios[source->aspect_ratio_index - 1];
 
     /* [DIRAC_STD] 10.3.7 Clean area. clean_area(video_params) */
     if (get_bits1(gb)) { /* [DIRAC_STD] custom_clean_area_flag */
         /* [DIRAC_STD] CLEAN_WIDTH */
-        source->clean_width        = svq3_get_ue_golomb(gb);
-         /* [DIRAC_STD] CLEAN_HEIGHT */
-        source->clean_height       = svq3_get_ue_golomb(gb);
-         /* [DIRAC_STD] CLEAN_LEFT_OFFSET */
-        source->clean_left_offset  = svq3_get_ue_golomb(gb);
+        source->clean_width = svq3_get_ue_golomb(gb);
+        /* [DIRAC_STD] CLEAN_HEIGHT */
+        source->clean_height = svq3_get_ue_golomb(gb);
+        /* [DIRAC_STD] CLEAN_LEFT_OFFSET */
+        source->clean_left_offset = svq3_get_ue_golomb(gb);
         /* [DIRAC_STD] CLEAN_RIGHT_OFFSET */
         source->clean_right_offset = svq3_get_ue_golomb(gb);
     }
@@ -218,16 +219,17 @@ static int parse_source_parameters(AVCodecContext *avctx, GetBitContext *gb,
         // This assumes either fullrange or MPEG levels only
         if (!source->pixel_range_index) {
             luma_offset = svq3_get_ue_golomb(gb);
-            luma_depth  = av_log2(svq3_get_ue_golomb(gb))+1;
+            luma_depth  = av_log2(svq3_get_ue_golomb(gb)) + 1;
             svq3_get_ue_golomb(gb); /* chroma offset    */
             svq3_get_ue_golomb(gb); /* chroma excursion */
-            avctx->color_range = luma_offset ? AVCOL_RANGE_MPEG : AVCOL_RANGE_JPEG;
+            avctx->color_range = luma_offset ? AVCOL_RANGE_MPEG
+                                             : AVCOL_RANGE_JPEG;
         }
     }
     /* [DIRAC_STD] Table 10.5
      * Available signal range presets <--> pixel_range_presets */
     if (source->pixel_range_index > 0) {
-        idx                = source->pixel_range_index-1;
+        idx                = source->pixel_range_index - 1;
         luma_depth         = pixel_range_presets[idx].bitdepth;
         avctx->color_range = pixel_range_presets[idx].color_range;
     }
@@ -239,7 +241,7 @@ static int parse_source_parameters(AVCodecContext *avctx, GetBitContext *gb,
 
     /* [DIRAC_STD] 10.3.9 Colour specification. colour_spec(video_params) */
     if (get_bits1(gb)) { /* [DIRAC_STD] custom_colour_spec_flag */
-         /* [DIRAC_STD] index */
+        /* [DIRAC_STD] index */
         idx = source->color_spec_index = svq3_get_ue_golomb(gb);
 
         if (source->color_spec_index > 4)
@@ -269,7 +271,7 @@ static int parse_source_parameters(AVCodecContext *avctx, GetBitContext *gb,
                 avctx->color_trc = AVCOL_TRC_BT709;
         }
     } else {
-        idx = source->color_spec_index;
+        idx                    = source->color_spec_index;
         avctx->color_primaries = dirac_color_presets[idx].color_primaries;
         avctx->colorspace      = dirac_color_presets[idx].colorspace;
         avctx->color_trc       = dirac_color_presets[idx].color_trc;
@@ -280,7 +282,7 @@ static int parse_source_parameters(AVCodecContext *avctx, GetBitContext *gb,
 
 /* [DIRAC_STD] 10. Sequence Header. sequence_header() */
 int avpriv_dirac_parse_sequence_header(AVCodecContext *avctx, GetBitContext *gb,
-                                   dirac_source_params *source)
+                                       dirac_source_params *source)
 {
     unsigned version_major;
     unsigned video_format, picture_coding_mode;
@@ -311,10 +313,11 @@ int avpriv_dirac_parse_sequence_header(AVCodecContext *avctx, GetBitContext *gb,
     if (ret = parse_source_parameters(avctx, gb, source))
         return ret;
 
-    if (ret = av_image_check_size(source->width, source->height, 0, avctx))
+    ret = ff_set_dimensions(avctx, source->width, source->height);
+    if (ret < 0)
         return ret;
 
-    avcodec_set_dimensions(avctx, source->width, source->height);
+    ff_set_sar(avctx, avctx->sample_aspect_ratio);
 
     /* [DIRAC_STD] picture_coding_mode shall be 0 for fields and 1 for frames
      * currently only used to signal field coding */