]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/dirac.c
ffmpeg: change command line option -dump to work without -loglevel debug
[ffmpeg] / libavcodec / dirac.c
index 07db919be47e3ee060a3b4c4fcf34ddf4df53d65..7546bd553772346f5a12d7931cb75961ac6ad781 100644 (file)
@@ -118,7 +118,7 @@ static const enum AVPixelFormat dirac_pix_fmt[2][3] = {
 /* [DIRAC_STD] 10.3 Parse Source Parameters.
  * source_parameters(base_video_format) */
 static int parse_source_parameters(AVCodecContext *avctx, GetBitContext *gb,
-                                   dirac_source_params *source)
+                                   dirac_source_params *source, int *bit_depth)
 {
     AVRational frame_rate = { 0, 0 };
     unsigned luma_depth = 8, luma_offset = 16;
@@ -239,6 +239,9 @@ static int parse_source_parameters(AVCodecContext *avctx, GetBitContext *gb,
     if (luma_depth > 8)
         av_log(avctx, AV_LOG_WARNING, "Bitdepth greater than 8\n");
 
+
+    *bit_depth = luma_depth;
+
     avctx->pix_fmt = dirac_pix_fmt[!luma_offset][source->chroma_format];
     avcodec_get_chroma_sub_sample(avctx->pix_fmt, &chroma_x_shift, &chroma_y_shift);
     if ((source->width % (1<<chroma_x_shift)) || (source->height % (1<<chroma_y_shift))) {
@@ -290,24 +293,25 @@ 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,
+                                       DiracVersionInfo *version,
+                                       int *bit_depth)
 {
-    unsigned version_major;
     unsigned video_format, picture_coding_mode;
     int ret;
 
     /* [DIRAC_SPEC] 10.1 Parse Parameters. parse_parameters() */
-    version_major  = svq3_get_ue_golomb(gb);
-    svq3_get_ue_golomb(gb); /* version_minor */
-    avctx->profile = svq3_get_ue_golomb(gb);
-    avctx->level   = svq3_get_ue_golomb(gb);
+    version->major  = svq3_get_ue_golomb(gb);
+    version->minor  = svq3_get_ue_golomb(gb);
+    avctx->profile  = svq3_get_ue_golomb(gb);
+    avctx->level    = svq3_get_ue_golomb(gb);
     /* [DIRAC_SPEC] sequence_header() -> base_video_format as defined in
      * 10.2 Base Video Format, table 10.1 Dirac predefined video formats */
-    video_format   = svq3_get_ue_golomb(gb);
+    video_format    = svq3_get_ue_golomb(gb);
 
-    if (version_major < 2)
+    if (version->major < 2)
         av_log(avctx, AV_LOG_WARNING, "Stream is old and may not work\n");
-    else if (version_major > 2)
+    else if (version->major > 2)
         av_log(avctx, AV_LOG_WARNING, "Stream may have unhandled features\n");
 
     if (video_format > 20U)
@@ -318,7 +322,7 @@ int avpriv_dirac_parse_sequence_header(AVCodecContext *avctx, GetBitContext *gb,
 
     /* [DIRAC_STD] 10.3 Source Parameters
      * Override the defaults. */
-    if (ret = parse_source_parameters(avctx, gb, source))
+    if (ret = parse_source_parameters(avctx, gb, source, bit_depth))
         return ret;
 
     ret = ff_set_dimensions(avctx, source->width, source->height);