Re: [FFmpeg-user] HEVC decoding

2020-03-03 Thread Dennis Mungai
On Tue, 3 Mar 2020 at 21:43, Mohammed Bey Ahmed Khernache
 wrote:
>
> Hello,
> which API or plug-in does ffmpeg use to decode HEVC-coded content?
> Is HEVC-Tiles-based parallelism supported by ffmpeg?
>
> Best regards


Hello Ahmed,

There's a native (software-based) HEVC decoder in FFmpeg with the
following capabilities:

ffmpeg -h decoder=hevc

Decoder hevc [HEVC (High Efficiency Video Coding)]:
General capabilities: dr1 delay threads
Threading capabilities: frame and slice
Supported hardware devices: cuda vdpau
HEVC decoder AVOptions:
  -apply_defdispwin  .D.V.. Apply default display
window from VUI (default false)
  -strict-displaywin .D.V.. stricly apply default
display window size (default false)

This is the decoder that ffmpeg will fall back on *if* no hwaccel is
specified on launch.
The capabilities for the same are as listed above, including threading
capabilities.

Depending on how your ffmpeg build is configured, there *may* be extra
decode wrappers present, which you can list via:

ffmpeg -decoders | grep hevc

Which, on my machine, returns:

 VFS..D hevc HEVC (High Efficiency Video Coding)
 V. hevc_v4l2m2m V4L2 mem2mem HEVC decoder wrapper (codec hevc)
 V. hevc_cuvid   Nvidia CUVID HEVC decoder (codec hevc)

Private options for the same can be viewed via:

ffmpeg -h decoder={wrapper_name}

Where available.

Your mileage will vary based on how your build was configured and the
environment you're on.

Warm regards,

Dennis.
___
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".

Re: [FFmpeg-user] HEVC decoding

2020-03-03 Thread PaulYurt
FFMPEG is written in C and I believe it doesn’t use plug-ins or APIs to decode 
HEVC. 

Paul


> On Mar 3, 2020, at 1:43 PM, Mohammed Bey Ahmed Khernache 
>  wrote:
> 

Hello,
which API or plug-in does ffmpeg use to decode HEVC-coded content?
Is HEVC-Tiles-based parallelism supported by ffmpeg?

Best regards
___
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".
___
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-user] HEVC decoding

2020-03-03 Thread Mohammed Bey Ahmed Khernache
Hello,
which API or plug-in does ffmpeg use to decode HEVC-coded content?
Is HEVC-Tiles-based parallelism supported by ffmpeg?

Best regards
___
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".

Re: [FFmpeg-user] HEVC decoding of first frame

2015-10-18 Thread Moritz Barsnick
On Fri, Oct 16, 2015 at 12:23:14 +0200, Christian Herglotz wrote:
> Hello,
> 
> a) I know that there is some overhead. So I also tested this for 
> sequences with different resolutions where I could observe the same 
> behavior:

Okay, point taken.

There's a new thread on ffmpeg-devel which points out that certain
formats decode the first image twice (once for format detection, once
for actual decoding). The described behavior may be identical to
yours:

http://ffmpeg.org/pipermail/ffmpeg-devel/2015-October/181529.html

Moritz
___
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-user


Re: [FFmpeg-user] HEVC decoding of first frame

2015-10-17 Thread Carl Eugen Hoyos
Christian Herglotz  fau.de> writes:

> Mean decoding times for  FFmpegHM
>  460*240 1 I-frame: 0.15s0.18s
>  460*240 2 I-frames:0.23s0.36s

I may absolutely misunderstand what you are trying 
to show but please understand that afaik, the two 
decoders cannot be compared.
Please provide command line and complete, uncut 
console output, add -threads 1 if you really want 
to measure performance decoding one frame and 
please test current FFmpeg git head, nothing 
else is supported on this mailing list.

Please don't top-post here, Carl Eugen

___
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-user


Re: [FFmpeg-user] HEVC decoding of first frame

2015-10-17 Thread Christian Herglotz

Hello,

a) I know that there is some overhead. So I also tested this for 
sequences with different resolutions where I could observe the same 
behavior:


Mean decoding times for  FFmpegHM
460*240 1 I-frame: 0.15s0.18s
460*240 2 I-frames:0.23s0.36s
1920*1080 1 I-frame: 2.26s2.89s
1920*1080 2 I-frames:   3.43s5.8s
2560*1600 1 I-frame: 4.25s5.46s
2560*1600 2 I-frames:   6.43s11s

A constant offset would not scale like this. Furthermore, I'm giving the 
corresponding decoding times for the HM-software as a reference where 
obviously the decoding time doubles for all cases.


b) The bit streams I am talking about are all-intra coded.

Thanks for your help!
Grüße zurück aus Franken!
Christian

Am 16.10.2015 um 11:37 schrieb Moritz Barsnick:

On Thu, Oct 15, 2015 at 08:22:35 +0200, Christian Herglotz wrote:

When timing the process I found that the decoding of the
first frame always takes twice as long as the decoding of all the other
frames.

I'm not sure I consider the test you provide as valid.

a) Initializing a decoder has (some) overhead. That aligns your numbers
a bit more.

b) HEVC does not only consist of I-frames (unless you claim the
opposite of your content). Who says P- or B-frames are easier/faster to
decode than I-frames?

That's just the theory from me. Someone who knows the code could help
more, or someone who is willing to add the benchmarking macros into the
code and rebuild. :-)

Cheers,
Gruß nach Franken,
Moritz
___
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-user


--
Dipl.-Ing. Dipl.-Wirt.Ing. Christian Herglotz

Chair of Multimedia Communications and Signal Processing
Friedrich-Alexander University Erlangen-Nürnberg
Cauerstr. 7, D-91058 Erlangen, Germany

___
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-user


Re: [FFmpeg-user] HEVC decoding of first frame

2015-10-16 Thread Moritz Barsnick
On Thu, Oct 15, 2015 at 08:22:35 +0200, Christian Herglotz wrote:
> When timing the process I found that the decoding of the
> first frame always takes twice as long as the decoding of all the other
> frames.

I'm not sure I consider the test you provide as valid.

a) Initializing a decoder has (some) overhead. That aligns your numbers
a bit more.

b) HEVC does not only consist of I-frames (unless you claim the
opposite of your content). Who says P- or B-frames are easier/faster to
decode than I-frames?

That's just the theory from me. Someone who knows the code could help
more, or someone who is willing to add the benchmarking macros into the
code and rebuild. :-)

Cheers,
Gruß nach Franken,
Moritz
___
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-user


Re: [FFmpeg-user] HEVC decoding of first frame

2015-10-15 Thread Christian Herglotz

Hello,

thanks for the quick answer! I upgraded my ffmpeg to version 2.8 and 
still observe the same problem as stated before:


When timing the process I found that the decoding of the
first frame always takes twice as long as the decoding of all the other
frames.

Output of stream 1:

root@herglotz-panda:/ramcache# time -p taskset -c 0 ./ffmpeg -i 
PeopleOnStreet_intra_1frames_QP10.bin -f rawvideo -y /dev/null

ffmpeg version 2.8 Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)
  configuration:
  libavutil  54. 31.100 / 54. 31.100
  libavcodec 56. 60.100 / 56. 60.100
  libavformat56. 40.101 / 56. 40.101
  libavdevice56.  4.100 / 56.  4.100
  libavfilter 5. 40.101 /  5. 40.101
  libswscale  3.  1.101 /  3.  1.101
  libswresample   1.  2.101 /  1.  2.101
Input #0, hevc, from 'PeopleOnStreet_intra_1frames_QP10.bin':
  Duration: N/A, bitrate: N/A
Stream #0:0: Video: hevc (Main), yuv420p(tv), 2560x1600, 25 tbr, 
1200k tbn, 25 tbc

Output #0, rawvideo, to '/dev/null':
  Metadata:
encoder : Lavf56.40.101
Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 
2560x1600, q=2-31, 200 kb/s, 25 fps, 25 tbn, 25 tbc

Metadata:
  encoder : Lavc56.60.100 rawvideo
Stream mapping:
  Stream #0:0 -> #0:0 (hevc (native) -> rawvideo (native))
Press [q] to stop, [?] for help
frame=1 fps=0.5 q=-0.0 size=6000kB time=00:00:00.04 
bitrate=1228800.0kbiframe=1 fps=0.5 q=-0.0 Lsize=6000kB 
time=00:00:00.04 bitrate=1228800.0kbits/s
video:6000kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB 
muxing overhead: 0.00%

real 4.39
user 4.28
sys 0.10


Output of stream 2:
root@herglotz-panda:/ramcache# time -p taskset -c 0 ./ffmpeg -i 
PeopleOnStreet_intra_2frames_QP10.bin -f rawvideo -y /dev/null

ffmpeg version 2.8 Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)
  configuration:
  libavutil  54. 31.100 / 54. 31.100
  libavcodec 56. 60.100 / 56. 60.100
  libavformat56. 40.101 / 56. 40.101
  libavdevice56.  4.100 / 56.  4.100
  libavfilter 5. 40.101 /  5. 40.101
  libswscale  3.  1.101 /  3.  1.101
  libswresample   1.  2.101 /  1.  2.101
Input #0, hevc, from 'PeopleOnStreet_intra_2frames_QP10.bin':
  Duration: N/A, bitrate: N/A
Stream #0:0: Video: hevc (Main), yuv420p(tv), 2560x1600, 25 tbr, 
1200k tbn, 25 tbc

Output #0, rawvideo, to '/dev/null':
  Metadata:
encoder : Lavf56.40.101
Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 
2560x1600, q=2-31, 200 kb/s, 25 fps, 25 tbn, 25 tbc

Metadata:
  encoder : Lavc56.60.100 rawvideo
Stream mapping:
  Stream #0:0 -> #0:0 (hevc (native) -> rawvideo (native))
Press [q] to stop, [?] for help
frame=2 fps=0.9 q=-0.0 size=   12000kB time=00:00:00.08 
bitrate=1228800.0kbiframe=2 fps=0.5 q=-0.0 size=   12000kB 
time=00:00:00.08 bitrate=1228800.0kbiframe=2 fps=0.5 q=-0.0 Lsize=   
12000kB time=00:00:00.08 bitrate=1228800.0kbits/s
video:12000kB audio:0kB subtitle:0kB other streams:0kB global 
headers:0kB muxing overhead: 0.00%

real 6.62
user 6.40
sys 0.21

This observation is also holds for sequences with a lower resolution.

Thanks for your help!
Christian

Am 18.09.2015 um 09:39 schrieb Moritz Barsnick:

Hallo Christian,

On Thu, Sep 17, 2015 at 10:48:16 +0200, Christian Herglotz wrote:

I've got a question regarding the decoding process for HEVC-coded
sequences. When timing the process I found that the decoding of the
first frame always takes twice as long as the decoding of all the other
frames.

While I'm happy to try to reproduce your problem and ask smart
questions, let me please point out:


ffmpeg version 2.1.git Copyright (c) 2000-2014 the FFmpeg developers
built on Feb 20 2014 16:27:13 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)

This version of ffmpeg is extremely old, considering the amount of
development happening. Especially with such a "new" codec as HEVC, you
can expect many improvements over 18 months. And if ffmpeg
happens/happened to have a bug, it may very well have been fixed in the
meantime. Nobody here will help trying to identify a bug in such an old
version.

Please repeat your tests with a very recent version of ffmpeg, best is
if you build if from git HEAD.

Thanks,
Gruß,
Moritz
___
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-user


--
Dipl.-Ing. Dipl.-Wirt.Ing. Christian Herglotz

Chair of Multimedia Communications and Signal Processing
Friedrich-Alexander University Erlangen-Nürnberg
Cauerstr. 7, D-91058 Erlangen, Germany

___
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-user


Re: [FFmpeg-user] HEVC decoding of first frame

2015-09-18 Thread Moritz Barsnick
Hallo Christian,

On Thu, Sep 17, 2015 at 10:48:16 +0200, Christian Herglotz wrote:
> I've got a question regarding the decoding process for HEVC-coded 
> sequences. When timing the process I found that the decoding of the 
> first frame always takes twice as long as the decoding of all the other 
> frames.

While I'm happy to try to reproduce your problem and ask smart
questions, let me please point out:

> ffmpeg version 2.1.git Copyright (c) 2000-2014 the FFmpeg developers
>built on Feb 20 2014 16:27:13 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)

This version of ffmpeg is extremely old, considering the amount of
development happening. Especially with such a "new" codec as HEVC, you
can expect many improvements over 18 months. And if ffmpeg
happens/happened to have a bug, it may very well have been fixed in the
meantime. Nobody here will help trying to identify a bug in such an old
version.

Please repeat your tests with a very recent version of ffmpeg, best is
if you build if from git HEAD.

Thanks,
Gruß,
Moritz
___
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-user


[FFmpeg-user] HEVC decoding of first frame

2015-09-17 Thread Christian Herglotz

Hello everyone,

I've got a question regarding the decoding process for HEVC-coded 
sequences. When timing the process I found that the decoding of the 
first frame always takes twice as long as the decoding of all the other 
frames. This seems to be true independent from the resolution. It is 
also not  related to inter coding, as all frames are intra coded with 
the same QP in the example given below. Other decoders (e.g. HM or 
libde265) do not show this behavior for the same input sequences. Here 
is an examplary output for a single frame and for two frames. It is 
timed using the linux time-function, furthermore single core processing 
is forced and priority is set to the highest level.


System: Ubuntu 12.04, Pandaboard with OMAP4430 SoC

Command line for single frame:
 time -p taskset -c 0 nice -n-30 /root/bin/ffmpeg -i 
PeopleOnStreet_intra_1frames_QP10.bin -f rawvideo -y /dev/null


Output:
ffmpeg version 2.1.git Copyright (c) 2000-2014 the FFmpeg developers
  built on Feb 20 2014 16:27:13 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)
  configuration: --prefix=/root/ffmpeg_build 
--extra-cflags=-I/root/ffmpeg_build/include 
--extra-ldflags=-L/root/ffmpeg_build/lib --bindir=/root/bin 
--extra-libs=-ldl --enable-gpl --enable-libass --enable-nonfree

  libavutil  52. 64.100 / 52. 64.100
  libavcodec 55. 52.102 / 55. 52.102
  libavformat55. 33.100 / 55. 33.100
  libavdevice55. 10.100 / 55. 10.100
  libavfilter 4.  1.103 /  4.  1.103
  libswscale  2.  5.101 /  2.  5.101
  libswresample   0. 17.104 /  0. 17.104
  libpostproc52.  3.100 / 52.  3.100
Input #0, hevc, from 'PeopleOnStreet_intra_1frames_QP10.bin':
  Duration: N/A, bitrate: N/A
Stream #0:0: Video: hevc (Main), yuv420p(tv), 2560x1600, 25 tbr, 
1200k tbn, 25 tbc

Output #0, rawvideo, to '/dev/null':
  Metadata:
encoder : Lavf55.33.100
Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 
2560x1600, q=2-31, 200 kb/s, 90k tbn, 25 tbc

Stream mapping:
  Stream #0:0 -> #0:0 (hevc -> rawvideo)
Press [q] to stop, [?] for help
frame=1 fps=0.3 q=0.0 size=6000kB time=00:00:00.04 
bitrate=1228800.0kbitframe=1 fps=0.3 q=0.0 Lsize=6000kB 
time=00:00:00.04 bitrate=1228800.0kbits/s
video:6000kB audio:0kB subtitle:0 data:0 global headers:0kB muxing 
overhead 0.00%

real 5.93
user 5.69
sys 0.22


Command line two frames:
 time -p taskset -c 0 nice -n-30 /root/bin/ffmpeg -i 
PeopleOnStreet_intra_2frames_QP10.bin -f rawvideo -y /dev/null


Output:
ffmpeg version 2.1.git Copyright (c) 2000-2014 the FFmpeg developers
  built on Feb 20 2014 16:27:13 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)
  configuration: --prefix=/root/ffmpeg_build 
--extra-cflags=-I/root/ffmpeg_build/include 
--extra-ldflags=-L/root/ffmpeg_build/lib --bindir=/root/bin 
--extra-libs=-ldl --enable-gpl --enable-libass --enable-nonfree

  libavutil  52. 64.100 / 52. 64.100
  libavcodec 55. 52.102 / 55. 52.102
  libavformat55. 33.100 / 55. 33.100
  libavdevice55. 10.100 / 55. 10.100
  libavfilter 4.  1.103 /  4.  1.103
  libswscale  2.  5.101 /  2.  5.101
  libswresample   0. 17.104 /  0. 17.104
  libpostproc52.  3.100 / 52.  3.100
Input #0, hevc, from 'PeopleOnStreet_intra_2frames_QP10.bin':
  Duration: N/A, bitrate: N/A
Stream #0:0: Video: hevc (Main), yuv420p(tv), 2560x1600, 25 tbr, 
1200k tbn, 25 tbc

Output #0, rawvideo, to '/dev/null':
  Metadata:
encoder : Lavf55.33.100
Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 
2560x1600, q=2-31, 200 kb/s, 90k tbn, 25 tbc

Stream mapping:
  Stream #0:0 -> #0:0 (hevc -> rawvideo)
Press [q] to stop, [?] for help
frame=2 fps=0.7 q=0.0 size=   12000kB time=00:00:00.08 
bitrate=1228800.0kbitframe=2 fps=0.3 q=0.0 size=   12000kB 
time=00:00:00.08 bitrate=1228800.0kbitframe=2 fps=0.3 q=0.0 Lsize=   
12000kB time=00:00:00.08 bitrate=1228800.0kbits/s
video:12000kB audio:0kB subtitle:0 data:0 global headers:0kB muxing 
overhead 0.00%

real 8.88
user 8.58
sys 0.28

Apparently, decoding of a single frame takes about 6s, decoding of two 
frames about 9s. Is it possible that the first frame is always decoded 
twice in this software?


Thanks for your help!
Christian Herglotz



--
Dipl.-Ing. Dipl.-Wirt.Ing. Christian Herglotz

Chair of Multimedia Communications and Signal Processing
Friedrich-Alexander University Erlangen-Nürnberg
Cauerstr. 7, D-91058 Erlangen, Germany

___
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-user