Hello!
I have tested h264encoder with sync mode and without. Time is ok.
But I have strange bug.
I`m generating h264 bitstream output like this
./h264encode -w 3840 -h 1080 -framecount 2500 -f 25 -o ./test.h264
I have generated different resolutions, from resolution 1024x768 I have such ugly picture.
At the moment I don`t understand what is it about?
Screenshots:
bug1920x1080.jpg http://yadi.sk/d/ixGQfaKLLM7aU
bug3840x1080 http://yadi.sk/d/fnZ1TXJSLM7ac
bug3840x1080_2 http://yadi.sk/d/7NqWLkgLLM7ai
Any ideas?
27.03.2014, 21:32, "Yuan, Shengquan" <[email protected]>:
“Frame Rate: 0.06 fps (1 frames, 16500 ms (16500.00 ms per frame))” in your test is calculated by “(total time of app execution)/(total frame)”. “(total time of app execution)” includes app setup, source YUV uploading, frame encoding, coded bitstream saving, app stop, etc. If you only encode 1 frame, the majority time will be “source YUV uploading”.There is detailed break-down of the time in the output, but since the application runs with two threads (one is source YUV uploading, another thread is frame encoding), you are not able to get the absolute time of a frame encoding.Tips:
- If you want to know the accurate time of one frame encoding, use option “-syncmode”, and check the time of “vaBegin/vaRender/vaEnd/vaSyncSurface”
- If you want to get the end-to-end encoding fps number, try to encoding thousand of frames with auto-generated YUV source (without –srcyuv), e.g. “h264encode –n 7000”
Thanks-AustinFrom: Libva [mailto:[email protected]] On Behalf Of Matt Pekar
Sent: Thursday, March 27, 2014 9:11 AM
To: Nik Orlov
Cc: [email protected]
Subject: Re: [Libva] linux vaapi h.264 encoding haswell hd graphics 4600For that size of frame, 20ms is a pretty darn good time IMO. We see 10ms (ish) on things in the 1280x720 range.Since your input stream is only 25fps, the encoder will be able to provide near real-time output, with just a 20ms delay before writing each frame.If you were trying to do 60fps then you wouldn't be able to do "real time" at all since you'd be falling behind 5ms every frame.On Thu, Mar 27, 2014 at 5:57 AM, Nik Orlov <[email protected]> wrote:Hello!
I have ubuntu-desktop 13.10 amd64 on core i7 4770 (Haswell, HD graphics 4600).
I have installed vaapi (libva from sources 1.3.0).
There is h264encode test. I have started it:
user@video-ubuntu:~/VAAPI/libva-1.3.0/test/encode$ ./h264encode -w 3840 -h 1080 -framecount 1 -f 25
Source frame is 3840x1080 and will code clip to 3840x1088 with crop
INPUT:Try to encode H264...
INPUT: RateControl : VBR
INPUT: Resolution : 3840x1080, 1 frames
INPUT: FrameRate : 25
INPUT: Bitrate : 24883200
INPUT: Slieces : 1
INPUT: IntraPeriod : 30
INPUT: IDRPeriod : 60
INPUT: IpPeriod : 1
INPUT: Initial QP : 26
INPUT: Min QP : 0
INPUT: Source YUV : AUTO generated
INPUT: Coded Clip : /tmp/test.264
INPUT: Rec Clip : Not save reconstructed frame
libva info: VA-API version 0.35.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/local/lib/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_35
libva info: va_openDriver() returns 0
Use profile VAProfileH264High
Support rate control mode (0x12):CBR CQP
Support VAConfigAttribEncPackedHeaders
Support packed sequence headers
Support packed picture headers
Support packed misc headers
Support 1 RefPicList0 and 1 RefPicList1
Loading data into surface 15.....Complete surface loading
|00000000(485835 bytes coded)
PERFORMANCE: Frame Rate : 0.06 fps (1 frames, 16500 ms (16500.00 ms per frame))
PERFORMANCE: Compression ratio : 12:1
PERFORMANCE: UploadPicture : 16444 ms (16444.00, 99.66% percent)
PERFORMANCE: vaBeginPicture : 0 ms (0.00, 0.00% percent)
PERFORMANCE: vaRenderHeader : 0 ms (0.00, 0.00% percent)
PERFORMANCE: vaEndPicture : 3 ms (3.00, 0.02% percent)
PERFORMANCE: vaSyncSurface : 32 ms (32.00, 0.19% percent)
PERFORMANCE: SavePicture : 0 ms (0.00, 0.00% percent)
PERFORMANCE: Others : 21 ms (21.00, 0.13% percent)
(Multithread enabled, the timing is only for reference)
And other way
user@video-ubuntu:~/VAAPI/libva-1.3.0/test/encode$ ./h264encode -w 3840 -h 1080 -framecount 2500 -f 25
Source frame is 3840x1080 and will code clip to 3840x1088 with crop
INPUT:Try to encode H264...
INPUT: RateControl : VBR
INPUT: Resolution : 3840x1080, 2500 frames
INPUT: FrameRate : 25
INPUT: Bitrate : 24883200
INPUT: Slieces : 1
INPUT: IntraPeriod : 30
INPUT: IDRPeriod : 60
INPUT: IpPeriod : 1
INPUT: Initial QP : 26
INPUT: Min QP : 0
INPUT: Source YUV : AUTO generated
INPUT: Coded Clip : /tmp/test.264
INPUT: Rec Clip : Not save reconstructed frame
libva info: VA-API version 0.35.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/local/lib/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_35
libva info: va_openDriver() returns 0
Use profile VAProfileH264High
Support rate control mode (0x12):CBR CQP
Support VAConfigAttribEncPackedHeaders
Support packed sequence headers
Support packed picture headers
Support packed misc headers
Support 1 RefPicList0 and 1 RefPicList1
Loading data into surface 15.....Complete surface loading
\00002499(719089 bytes coded)
PERFORMANCE: Frame Rate : 53.70 fps (2500 frames, 46555 ms (18.62 ms per frame))
PERFORMANCE: Compression ratio : 11:1
PERFORMANCE: UploadPicture : 16364 ms (6.55, 35.15% percent)
PERFORMANCE: vaBeginPicture : 2 ms (0.00, 0.00% percent)
PERFORMANCE: vaRenderHeader : 18 ms (0.01, 0.04% percent)
PERFORMANCE: vaEndPicture : 1098 ms (0.44, 2.36% percent)
PERFORMANCE: vaSyncSurface : 21385 ms (8.55, 45.93% percent)
PERFORMANCE: SavePicture : 8759 ms (3.50, 18.81% percent)
PERFORMANCE: Others : -1071 ms (1717986.49, 9225574.54% percent)
(Multithread enabled, the timing is only for reference)
So, when test encodes more frames time for encoding 1 frame is about 20ms.
Why it is so?
My primary question, if I want to encode video in real time (It means camera sends me frame each 40ms), what time for encoding 1 frame I will get?
As I understand programm sends some data to GPU, GPU encodes video and then send me encoded data back.
How much time takes sending data to GPU and back?
Maybe it will possible to encode each frame in real time, or maybe it isn`t possible, but It is possible to keep some buffer (for example for 25 frames - 1 sec of video) and than encode ot very fast.
--
Ник Орлов mailto:[email protected]
_______________________________________________
Libva mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libva
_______________________________________________ Libva mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libva
