diff mbox

[FFmpeg-devel] avcodec/dnxhddec: fix decoding of DNxHR HQX 10-bit

Message ID 20170222134959.32498-1-onemda@gmail.com
State Accepted
Headers show

Commit Message

Paul B Mahol Feb. 22, 2017, 1:49 p.m. UTC
Signed-off-by: Paul B Mahol <onemda@gmail.com>
---
 libavcodec/dnxhddec.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Carl Eugen Hoyos Feb. 22, 2017, 11:46 p.m. UTC | #1
2017-02-22 14:51 GMT+01:00 Paul B Mahol <onemda@gmail.com>:
> On 2/22/17, Paul B Mahol <onemda@gmail.com> wrote:
>> Signed-off-by: Paul B Mahol <onemda@gmail.com>
>> ---
>>  libavcodec/dnxhddec.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/libavcodec/dnxhddec.c b/libavcodec/dnxhddec.c
>> index 70ce264..cdbc0bc 100644
>> --- a/libavcodec/dnxhddec.c
>> +++ b/libavcodec/dnxhddec.c
>> @@ -435,7 +435,7 @@ static int dnxhd_decode_dct_block_8(const DNXHDContext
>> *ctx,
>>  static int dnxhd_decode_dct_block_10(const DNXHDContext *ctx,
>>                                       RowContext *row, int n)
>>  {
>> -    return dnxhd_decode_dct_block(ctx, row, n, 6, 8, 4, 0);
>> +    return dnxhd_decode_dct_block(ctx, row, n, 6, 32, 6, 0);
>>  }
>>
>>  static int dnxhd_decode_dct_block_10_444(const DNXHDContext *ctx,
>> --
>> 2.9.3
>>
>>
>
> File can be found here:
> https://drive.google.com/open?id=0B1hdyiz226iBV1llcDl3LW80U2c

The file does not decode here with your patch applied:
$ md5sum test.mov
25e45b380250bb76296f623fee9d43f1  test.mov

$ ffmpeg -i test.mov -f null -
ffmpeg version N-83619-g6a22d24 Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 4.7 (SUSE Linux)
  configuration: --enable-gpl --enable-libx265
  libavutil      55. 47.100 / 55. 47.100
  libavcodec     57. 81.100 / 57. 81.100
  libavformat    57. 66.102 / 57. 66.102
  libavdevice    57.  2.100 / 57.  2.100
  libavfilter     6. 73.100 /  6. 73.100
  libswscale      4.  3.101 /  4.  3.101
  libswresample   2.  4.100 /  2.  4.100
  libpostproc    54.  2.100 / 54.  2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mov':
  Metadata:
    major_brand     : qt
    minor_version   : 512
    compatible_brands: qt
    encoder         : Lavf57.59.100
    make            : Atomos
    make-eng        : Atomos
  Duration: 00:00:00.17, start: 0.000000, bitrate: 697811 kb/s
    Stream #0:0(eng): Video: dnxhd (DNXHR HQX) (AVdh / 0x68645641),
yuv422p10le(tv, bt709/unknown/unknown), 3840x2160, 698439 kb/s, SAR
1:1 DAR 16:9, 23.98 fps, 23.98 tbr, 24k tbn, 24k tbc (default)
    Metadata:
      handler_name    : DataHandler
      encoder         : Avid DNxHR Codec
      timecode        : 00:00:00:00
    Stream #0:1(eng): Data: none (tmcd / 0x64636D74), 0 kb/s
    Metadata:
      handler_name    : DataHandler
      timecode        : 00:00:00:00
Output #0, null, to 'pipe:':
  Metadata:
    major_brand     : qt
    minor_version   : 512
    compatible_brands: qt
    make-eng        : Atomos
    make            : Atomos
    encoder         : Lavf57.66.102
    Stream #0:0(eng): Video: wrapped_avframe, yuv422p10le, 3840x2160
[SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 23.98 fps, 23.98 tbn, 23.98 tbc
(default)
    Metadata:
      handler_name    : DataHandler
      timecode        : 00:00:00:00
      encoder         : Lavc57.81.100 wrapped_avframe
Stream mapping:
  Stream #0:0 -> #0:0 (dnxhd (native) -> wrapped_avframe (native))
Press [q] to stop, [?] for help
frame=    0 fps=0.0 q=0.0 Lsize=N/A time=00:00:00.00 bitrate=N/A speed=   0x
video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: unknown
Output file is empty, nothing was encoded (check -ss / -t / -frames
parameters if used)

Carl Eugen
Paul B Mahol Feb. 23, 2017, 7 a.m. UTC | #2
On 2/23/17, Carl Eugen Hoyos <ceffmpeg@gmail.com> wrote:
> 2017-02-22 14:51 GMT+01:00 Paul B Mahol <onemda@gmail.com>:
>> On 2/22/17, Paul B Mahol <onemda@gmail.com> wrote:
>>> Signed-off-by: Paul B Mahol <onemda@gmail.com>
>>> ---
>>>  libavcodec/dnxhddec.c | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/libavcodec/dnxhddec.c b/libavcodec/dnxhddec.c
>>> index 70ce264..cdbc0bc 100644
>>> --- a/libavcodec/dnxhddec.c
>>> +++ b/libavcodec/dnxhddec.c
>>> @@ -435,7 +435,7 @@ static int dnxhd_decode_dct_block_8(const
>>> DNXHDContext
>>> *ctx,
>>>  static int dnxhd_decode_dct_block_10(const DNXHDContext *ctx,
>>>                                       RowContext *row, int n)
>>>  {
>>> -    return dnxhd_decode_dct_block(ctx, row, n, 6, 8, 4, 0);
>>> +    return dnxhd_decode_dct_block(ctx, row, n, 6, 32, 6, 0);
>>>  }
>>>
>>>  static int dnxhd_decode_dct_block_10_444(const DNXHDContext *ctx,
>>> --
>>> 2.9.3
>>>
>>>
>>
>> File can be found here:
>> https://drive.google.com/open?id=0B1hdyiz226iBV1llcDl3LW80U2c
>
> The file does not decode here with your patch applied:
> $ md5sum test.mov
> 25e45b380250bb76296f623fee9d43f1  test.mov

Disable edit list support.
Carl Eugen Hoyos Feb. 23, 2017, 1:49 p.m. UTC | #3
2017-02-23 8:00 GMT+01:00 Paul B Mahol <onemda@gmail.com>:
> On 2/23/17, Carl Eugen Hoyos <ceffmpeg@gmail.com> wrote:
>> 2017-02-22 14:51 GMT+01:00 Paul B Mahol <onemda@gmail.com>:
>>> On 2/22/17, Paul B Mahol <onemda@gmail.com> wrote:
>>>> Signed-off-by: Paul B Mahol <onemda@gmail.com>
>>>> ---
>>>>  libavcodec/dnxhddec.c | 2 +-
>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/libavcodec/dnxhddec.c b/libavcodec/dnxhddec.c
>>>> index 70ce264..cdbc0bc 100644
>>>> --- a/libavcodec/dnxhddec.c
>>>> +++ b/libavcodec/dnxhddec.c
>>>> @@ -435,7 +435,7 @@ static int dnxhd_decode_dct_block_8(const
>>>> DNXHDContext
>>>> *ctx,
>>>>  static int dnxhd_decode_dct_block_10(const DNXHDContext *ctx,
>>>>                                       RowContext *row, int n)
>>>>  {
>>>> -    return dnxhd_decode_dct_block(ctx, row, n, 6, 8, 4, 0);
>>>> +    return dnxhd_decode_dct_block(ctx, row, n, 6, 32, 6, 0);
>>>>  }
>>>>
>>>>  static int dnxhd_decode_dct_block_10_444(const DNXHDContext *ctx,
>>>> --
>>>> 2.9.3
>>>>
>>>>
>>>
>>> File can be found here:
>>> https://drive.google.com/open?id=0B1hdyiz226iBV1llcDl3LW80U2c
>>
>> The file does not decode here with your patch applied:
>> $ md5sum test.mov
>> 25e45b380250bb76296f623fee9d43f1  test.mov
>
> Disable edit list support.

Thank you.

How can I create such a sample?

Carl Eugen
Paul B Mahol Feb. 23, 2017, 2:18 p.m. UTC | #4
On 2/23/17, Carl Eugen Hoyos <ceffmpeg@gmail.com> wrote:
> 2017-02-23 8:00 GMT+01:00 Paul B Mahol <onemda@gmail.com>:
>> On 2/23/17, Carl Eugen Hoyos <ceffmpeg@gmail.com> wrote:
>>> 2017-02-22 14:51 GMT+01:00 Paul B Mahol <onemda@gmail.com>:
>>>> On 2/22/17, Paul B Mahol <onemda@gmail.com> wrote:
>>>>> Signed-off-by: Paul B Mahol <onemda@gmail.com>
>>>>> ---
>>>>>  libavcodec/dnxhddec.c | 2 +-
>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/libavcodec/dnxhddec.c b/libavcodec/dnxhddec.c
>>>>> index 70ce264..cdbc0bc 100644
>>>>> --- a/libavcodec/dnxhddec.c
>>>>> +++ b/libavcodec/dnxhddec.c
>>>>> @@ -435,7 +435,7 @@ static int dnxhd_decode_dct_block_8(const
>>>>> DNXHDContext
>>>>> *ctx,
>>>>>  static int dnxhd_decode_dct_block_10(const DNXHDContext *ctx,
>>>>>                                       RowContext *row, int n)
>>>>>  {
>>>>> -    return dnxhd_decode_dct_block(ctx, row, n, 6, 8, 4, 0);
>>>>> +    return dnxhd_decode_dct_block(ctx, row, n, 6, 32, 6, 0);
>>>>>  }
>>>>>
>>>>>  static int dnxhd_decode_dct_block_10_444(const DNXHDContext *ctx,
>>>>> --
>>>>> 2.9.3
>>>>>
>>>>>
>>>>
>>>> File can be found here:
>>>> https://drive.google.com/open?id=0B1hdyiz226iBV1llcDl3LW80U2c
>>>
>>> The file does not decode here with your patch applied:
>>> $ md5sum test.mov
>>> 25e45b380250bb76296f623fee9d43f1  test.mov
>>
>> Disable edit list support.
>
> Thank you.
>
> How can I create such a sample?

Buy certain software.
Carl Eugen Hoyos Feb. 24, 2017, 12:49 a.m. UTC | #5
2017-02-23 15:18 GMT+01:00 Paul B Mahol <onemda@gmail.com>:
> On 2/23/17, Carl Eugen Hoyos <ceffmpeg@gmail.com> wrote:
>> 2017-02-23 8:00 GMT+01:00 Paul B Mahol <onemda@gmail.com>:
>>> On 2/23/17, Carl Eugen Hoyos <ceffmpeg@gmail.com> wrote:
>>>> 2017-02-22 14:51 GMT+01:00 Paul B Mahol <onemda@gmail.com>:
>>>>> On 2/22/17, Paul B Mahol <onemda@gmail.com> wrote:
>>>>>> Signed-off-by: Paul B Mahol <onemda@gmail.com>
>>>>>> ---
>>>>>>  libavcodec/dnxhddec.c | 2 +-
>>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>>
>>>>>> diff --git a/libavcodec/dnxhddec.c b/libavcodec/dnxhddec.c
>>>>>> index 70ce264..cdbc0bc 100644
>>>>>> --- a/libavcodec/dnxhddec.c
>>>>>> +++ b/libavcodec/dnxhddec.c
>>>>>> @@ -435,7 +435,7 @@ static int dnxhd_decode_dct_block_8(const
>>>>>> DNXHDContext
>>>>>> *ctx,
>>>>>>  static int dnxhd_decode_dct_block_10(const DNXHDContext *ctx,
>>>>>>                                       RowContext *row, int n)
>>>>>>  {
>>>>>> -    return dnxhd_decode_dct_block(ctx, row, n, 6, 8, 4, 0);
>>>>>> +    return dnxhd_decode_dct_block(ctx, row, n, 6, 32, 6, 0);
>>>>>>  }
>>>>>>
>>>>>>  static int dnxhd_decode_dct_block_10_444(const DNXHDContext *ctx,
>>>>>> --
>>>>>> 2.9.3
>>>>>>
>>>>>>
>>>>>
>>>>> File can be found here:
>>>>> https://drive.google.com/open?id=0B1hdyiz226iBV1llcDl3LW80U2c
>>>>
>>>> The file does not decode here with your patch applied:
>>>> $ md5sum test.mov
>>>> 25e45b380250bb76296f623fee9d43f1  test.mov
>>>
>>> Disable edit list support.
>>
>> Thank you.
>>
>> How can I create such a sample?
>
> Buy certain software.

What I meant was:
How can I create a mov file with FFmpeg that fails without ignore_editlist?
The sample you provided was made with FFmpeg / libavformat.

Carl Eugen
Paul B Mahol Feb. 24, 2017, 12:55 a.m. UTC | #6
On 2/24/17, Carl Eugen Hoyos <ceffmpeg@gmail.com> wrote:
> 2017-02-23 15:18 GMT+01:00 Paul B Mahol <onemda@gmail.com>:
>> On 2/23/17, Carl Eugen Hoyos <ceffmpeg@gmail.com> wrote:
>>> 2017-02-23 8:00 GMT+01:00 Paul B Mahol <onemda@gmail.com>:
>>>> On 2/23/17, Carl Eugen Hoyos <ceffmpeg@gmail.com> wrote:
>>>>> 2017-02-22 14:51 GMT+01:00 Paul B Mahol <onemda@gmail.com>:
>>>>>> On 2/22/17, Paul B Mahol <onemda@gmail.com> wrote:
>>>>>>> Signed-off-by: Paul B Mahol <onemda@gmail.com>
>>>>>>> ---
>>>>>>>  libavcodec/dnxhddec.c | 2 +-
>>>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>>>
>>>>>>> diff --git a/libavcodec/dnxhddec.c b/libavcodec/dnxhddec.c
>>>>>>> index 70ce264..cdbc0bc 100644
>>>>>>> --- a/libavcodec/dnxhddec.c
>>>>>>> +++ b/libavcodec/dnxhddec.c
>>>>>>> @@ -435,7 +435,7 @@ static int dnxhd_decode_dct_block_8(const
>>>>>>> DNXHDContext
>>>>>>> *ctx,
>>>>>>>  static int dnxhd_decode_dct_block_10(const DNXHDContext *ctx,
>>>>>>>                                       RowContext *row, int n)
>>>>>>>  {
>>>>>>> -    return dnxhd_decode_dct_block(ctx, row, n, 6, 8, 4, 0);
>>>>>>> +    return dnxhd_decode_dct_block(ctx, row, n, 6, 32, 6, 0);
>>>>>>>  }
>>>>>>>
>>>>>>>  static int dnxhd_decode_dct_block_10_444(const DNXHDContext *ctx,
>>>>>>> --
>>>>>>> 2.9.3
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> File can be found here:
>>>>>> https://drive.google.com/open?id=0B1hdyiz226iBV1llcDl3LW80U2c
>>>>>
>>>>> The file does not decode here with your patch applied:
>>>>> $ md5sum test.mov
>>>>> 25e45b380250bb76296f623fee9d43f1  test.mov
>>>>
>>>> Disable edit list support.
>>>
>>> Thank you.
>>>
>>> How can I create such a sample?
>>
>> Buy certain software.
>
> What I meant was:
> How can I create a mov file with FFmpeg that fails without ignore_editlist?
> The sample you provided was made with FFmpeg / libavformat.

The sample was only trimmed with FFmpeg. For full samples buy certain software.
Carl Eugen Hoyos Feb. 24, 2017, 1:06 a.m. UTC | #7
2017-02-24 1:55 GMT+01:00 Paul B Mahol <onemda@gmail.com>:

>> What I meant was:
>> How can I create a mov file with FFmpeg that fails without ignore_editlist?
>> The sample you provided was made with FFmpeg / libavformat.
>
> The sample was only trimmed with FFmpeg. For full samples buy certain software.

I understand this.

So far, whenever I "trimmed" a sample with FFmpeg, I did not have to
use ignore_editlist for decoding. So my question was, did you do anything
special when trimming the sample or did I just not test often enough?

Carl Eugen
Paul B Mahol Feb. 24, 2017, 9:48 a.m. UTC | #8
On 2/24/17, Carl Eugen Hoyos <ceffmpeg@gmail.com> wrote:
> 2017-02-24 1:55 GMT+01:00 Paul B Mahol <onemda@gmail.com>:
>
>>> What I meant was:
>>> How can I create a mov file with FFmpeg that fails without
>>> ignore_editlist?
>>> The sample you provided was made with FFmpeg / libavformat.
>>
>> The sample was only trimmed with FFmpeg. For full samples buy certain
>> software.
>
> I understand this.
>
> So far, whenever I "trimmed" a sample with FFmpeg, I did not have to
> use ignore_editlist for decoding. So my question was, did you do anything
> special when trimming the sample or did I just not test often enough?

Ask guy on doom9 forum who made that sample.
diff mbox

Patch

diff --git a/libavcodec/dnxhddec.c b/libavcodec/dnxhddec.c
index 70ce264..cdbc0bc 100644
--- a/libavcodec/dnxhddec.c
+++ b/libavcodec/dnxhddec.c
@@ -435,7 +435,7 @@  static int dnxhd_decode_dct_block_8(const DNXHDContext *ctx,
 static int dnxhd_decode_dct_block_10(const DNXHDContext *ctx,
                                      RowContext *row, int n)
 {
-    return dnxhd_decode_dct_block(ctx, row, n, 6, 8, 4, 0);
+    return dnxhd_decode_dct_block(ctx, row, n, 6, 32, 6, 0);
 }
 
 static int dnxhd_decode_dct_block_10_444(const DNXHDContext *ctx,