GithubHelp home page GithubHelp logo

intel / libyami-utils Goto Github PK

View Code? Open in Web Editor NEW
24.0 28.0 45.0 334 KB

Libyami Utilities

License: Apache License 2.0

Makefile 2.41% Shell 4.41% C 16.41% C++ 70.56% M4 2.33% Python 3.87%
video video-processing

libyami-utils's People

Contributors

chivakker avatar dongpingx avatar dspmeng avatar kwizart avatar lindayu17 avatar lizhong1008 avatar mypopydev avatar rdower avatar seanvk avatar sebastinas avatar stripes416 avatar uartie avatar wangzj0601 avatar xuguangxin avatar yujiankang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

libyami-utils's Issues

keyFrame management with vpx encoders

Application (yamiencode) can call encode and force the request of a key frame. This way the component doesn't need to keep track of intraPeriod and the application can do it upon request.

vp8 temporal svc encoding quits with assert error.

using yamitranscode to encode vp8 tsvc, it quits with an assert error:

./yamitranscode -W 352 -H 288 -i akiyo_cif.yuv -t 2 -c VP8 -o test_temporal.ivf
libva info: VA-API version 1.1.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /home/imedia/SourceCode/intel-media/stack1/intel-vaapi-driver/src/.libs//i965_drv_video.so
libva info: Found init function vaDriverInit
libva info: va_openDriver() returns 0
yamitranscode: i965_encoder.c:1163: intel_encoder_check_vp8_parameter: Assertion `pic_param->ref_gf_frame != VA_INVALID_SURFACE' failed.
Aborted (core dumped)

my vaapi stack looks like this:
Celeron G3930 KabyLake
Ubuntu 18.04 64 Bit
and the latest masters from github:
intel-vaapi-driver (40b15a5c6c0103c23a5db810aef27cf75d0b6723)
libva (b3be72a5a110880f70626d7c3bed953cdde124b2)
libyami (49f32de0e537577927b98deb551e16a7fa89d892)
libyami-utils (ebcb87e)


I do think that this issue is actually related to intel-vaapi-driver and I wrote a pull request that is trying to resolve this issue and it also addresses a second issue which is caused by faulty reference buffer copies, when refresh_golden or refresh_alternate is set.

see pull request here: intel/intel-vaapi-driver#384

Grid example fails to compile

The --enable-dmabuf configure option enables the grid example to be compiled. However, if also configured with --enable-avformat, the grid example fails to compile.

In file included from ../tests/decodeinputavformat.cpp:20:0:
../tests/decodeinputavformat.h:22:34: fatal error: libavformat/avformat.h: No such file or directory
compilation terminated.
Makefile:710: recipe for target '../tests/grid-decodeinputavformat.o' failed
make[3]: *** [../tests/grid-decodeinputavformat.o] Error 1
make[3]: *** Waiting for unfinished jobs....
In file included from ../tests/decodeinput.cpp:28:0:
../tests/decodeinputavformat.h:22:34: fatal error: libavformat/avformat.h: No such file or directory
compilation terminated.
Makefile:696: recipe for target '../tests/grid-decodeinput.o' failed
make[3]: *** [../tests/grid-decodeinput.o] Error 1

The problem is that the makefile does not add LIBAVFORMAT flags to the grid compile target.

Compile failure on Ubuntu Trusty (14.04) with AVFORMAT

With --enable-avformat, libyami-utils fails to compile using the Ubuntu Trusty provided libav*-dev packages. It compiles fine on Ubuntu Xenial (16.04) and Yakkety (16.10). Configure should detect the proper version of libav* required to compile.

../tests/decodeinputavformat.cpp:106:5: error: 'AV_CODEC_ID_H265' was not declared in this scope
AV_CODEC_ID_H265, YAMI_MIME_H265,
^
../tests/decodeinputavformat.cpp: In member function 'virtual bool DecodeInputAvFormat::getNextDecodeUnit(VideoDecodeBuffer&)':
../tests/decodeinputavformat.cpp:127:34: error: 'av_packet_unref' was not declared in this scope
av_packet_unref(&m_packet);
^
../tests/decodeinputavformat.cpp: In destructor 'virtual DecodeInputAvFormat::~DecodeInputAvFormat()':
../tests/decodeinputavformat.cpp:153:34: error: 'av_packet_unref' was not declared in this scope
av_packet_unref(&m_packet);
^
make[2]: *** [../tests/grid-decodeinputavformat.o] Error 1
make[2]: *** Waiting for unfinished jobs....
../tests/decodeinputavformat.cpp:106:5: error: 'AV_CODEC_ID_H265' was not declared in this scope
AV_CODEC_ID_H265, YAMI_MIME_H265,
^
../tests/decodeinputavformat.cpp: In member function 'virtual bool DecodeInputAvFormat::getNextDecodeUnit(VideoDecodeBuffer&)':
../tests/decodeinputavformat.cpp:127:34: error: 'av_packet_unref' was not declared in this scope
av_packet_unref(&m_packet);
^
../tests/decodeinputavformat.cpp: In destructor 'virtual DecodeInputAvFormat::~DecodeInputAvFormat()':
../tests/decodeinputavformat.cpp:153:34: error: 'av_packet_unref' was not declared in this scope
av_packet_unref(&m_packet);
^
make[2]: *** [../tests/decodeinputavformat.o] Error 1

Develop example apps to capture and playback VAAPI state of an H.264 decode

Develop an example application that captures the VAAPI state and serializes it into an output file for later restore and playback. Develop an example application that can restore and playback the serialized VAAPI output.

This should be feasible by intercepting/wrapping calls into VAAPI where we can capture the surfaces, picture, buffers, config, context, etc. during a libyami decode session.

[HEVC 10bit encode] yamiencode raised core dump issue when did the hevc 10bit encode test

yamiencode -c HEVC -s P010 -W 3840 -H 2160 -i ./4K_3840x2160.P010 -o ./4K_3840_2160_rc0_ipb_gop30_fps30_qp50_lcu32.h265 --qp 50 --ipperiod 2 --intraperiod 30
libva info: VA-API version 0.40.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /opt/X11R7/lib/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_40
libva info: va_openDriver() returns 0
yamiencode: intel_bufmgr_gem.c:1405: drm_intel_gem_bo_unreference_locked_timed: Assertion `((&bo_gem->refcount)->atomic) > 0' failed.
./hevc_10bit_encoding_cqp.sh: line 101: 7850 Aborted (core dumped) yamiencode -c HEVC -s P010 -W $WIDTH -H $HEIGHT -i $media_streams_path/10bit/$filename -o ./$testname --qp $qp --ipperiod $ipb $gopsetting

How to encode surfaces created from prime fd ?

Hi guy,

I try to encode a surface created from prime fd(backed by drm_i915_gem_vgtbuffer).
But it seems to got an incorrect output by my code. It always display a green screen where i expect a
guest desktop snapshot.
Can you please give me some suggestions?

Here is part of my code:

  1. create a VASurfaceID from prime fd {
    VASurfaceAttribExternalBuffers external;
    memset(&external, 0, sizeof(external));

external.pixel_format = VA_FOURCC_BGRX;
external.width = m_width;
external.height = m_height;
external.data_size = m_width * m_height * BPP / 8;
external.num_planes = 1;
external.pitches[0] = m_width; //can be obtained from vcreate FIXME
external.buffers = prime_fd; /* import from vgtbuffer*/
external.num_buffers = 1;

VASurfaceAttrib attribs[2];
attribs[0].flags = VA_SURFACE_ATTRIB_SETTABLE;
attribs[0].type = VASurfaceAttribMemoryType;
attribs[0].value.type = VAGenericValueTypeInteger;
attribs[0].value.value.i = VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME;

attribs[1].flags = VA_SURFACE_ATTRIB_SETTABLE;
attribs[1].type = VASurfaceAttribExternalBufferDescriptor;
attribs[1].value.type = VAGenericValueTypePointer;
attribs[1].value.value.p = &external;

VAStatus vaStatus = vaCreateSurfaces(*(m_display.get()), VA_RT_FORMAT_RGB32, m_width, m_height, &surfaces, 1,attribs, sizeof(attribs)/sizeof(attribs[0]));

if (vaStatus != VA_STATUS_SUCCESS){
fprintf(stderr,"VA SURFACE CREATE FAILED!\n");
return -1;
}
return 0;
}
2. create a h264 encoder {
encoder = createVideoEncoder(YAMI_MIME_H264);
...
encoder->start()
}
3. doing encode {
VideoFrame frame;
frame.surface = surface; /* create by step 1 */
frame.fourcc = YAMI_FOURCC_RGBX;
encoder->encode(frame);
}
4. get the coded buffer {
output = EncodeOutput::create(outputfile,videoWidth,videoHeight,codec);
do{
status = encoder->getOutput(&outputBuffer,false);
if(status == ENCODE_SUCCESS
&& output->write(outputBuffer.data,outputBuffer.dataSize)){
printf("output data size:%d\n",outputBuffer.dataSize);
}
}while(status != ENCODE_BUFFER_NO_MORE);
}

Could you please be consistent on Release Names??????

You changed the release names from version numbers back to libyami.

First - This is not Libyami
Second - You are breaking packagers who would like to include it.

Consistency is key

on Nov 3, 2017
libyami-1.3.0 …
configure.ac: bump to version 1.3.0
Signed-off-by: jkyu [email protected]
d9c62f6 zip tar.gz

Again - This is not LIBYAMI

Previous releases used just the version number.

Package builders were expecting version numbers for the tar balls.

Fix this please.

Sean

VP8 SVCT yamitranscode pink artefakts with fast moving picture in CBR/VBR mode

I do get pink artefacts when using vp8 temporal scaling (SVCT) with fast moving pictures in CBR and VBR mode.

Example "football (a)" from:
https://media.xiph.org/video/derf/

Command Line:
./yamitranscode -i ~/Videos/football_w720_h486_f360_fps30.yuv -W 720 -H 486 -o football_cbr700_svct3_upstream.ivf -c VP8 --btl0 700 --btl1 700 --intraperiod 32 --rcmode CBR -b 700 -t 3

I also tested this issue with scaled input video to match 16x16 or 64x64 raster (720x480 and 768x512) with the same result.

my explanation is something like this - intel-vaapi-driver is doing 1 pass encoding and the estimator for cbr/vbr bitrate usage runs out of useable bandwidth capacity.

This might be related to the fact that libyami VP8 SVCT implementation is using only last and golden references and not alternate frame references. This might influence the cbr/vbr calculation, but I can't confirm this information.

[regression] yamidecode Segmentation Fault since 52fe395427b3

yamidecode produces segfault for any input stream since commit:

52fe395 - 2017-05-12 12:04:45 +0800 - wudping - vp8dec: enable svc-t decoding

Starting program: /opt/media/install/bin/yamidecode -i /opt/media/src/media_smoke/media_streams/decodebitstreams/JPEG_RefCompare/010309_0800_4680_nshs.jpg -m 0 -f I420
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff5c246ad in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
(gdb) bt full
#0  0x00007ffff5c246ad in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
No symbol table info available.
#1  0x00007ffff5c84529 in std::string::assign(std::string const&) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
No symbol table info available.
#2  0x00000000004056c9 in operator= (__str="./", this=0x7fffffffe070) at /usr/include/c++/4.8/bits/basic_string.h:547
No locals.
#3  processCmdLine (argc=7, argv=<optimized out>, parameters=parameters@entry=0x7fffffffe050) at decodehelp.cpp:144
        option_index = 32767
        long_opts = {{name = 0x414220 "help", has_arg = 0, flag = 0x0, val = 104}, {name = 0x414225 "capi", has_arg = 0, flag = 0x0, val = 0}, {name = 0x41422a "temporal-layer", has_arg = 1, flag = 0x0, val = 0}, {name = 0x0, 
            has_arg = 0, flag = 0x0, val = 0}}
        opt = <optimized out>
        isSetFourcc = true
        outputFile = "./"
        width = -8144
        height = 32767
#4  0x0000000000404d41 in DecodeTest::init (this=this@entry=0x7fffffffe020, argc=<optimized out>, argv=<optimized out>) at decode.cpp:60
No locals.
#5  0x0000000000404180 in main (argc=<optimized out>, argv=<optimized out>) at decode.cpp:105
        decode = {m_output = std::tr1::shared_ptr (empty) 0x0, m_nativeDisplay = std::tr1::shared_ptr (empty) 0x0, m_vppInput = std::tr1::shared_ptr (empty) 0x0, m_params = {
            inputFile = 0x7fffffffe46d "/opt/media/src/media_smoke/media_streams/decodebitstreams/JPEG_RefCompare/010309_0800_4680_nshs.jpg", width = 0, height = 0, renderMode = 0, waitBeforeQuit = 1, renderFrames = 4294967295, 
            renderFourcc = 808596553, outputFile = <error reading variable: Cannot access memory at address 0xffffffffffffffe8>, useCAPI = false, temporalLayer = 0, spacialLayer = 0, qualityLayer = 0}}

I have only reproduced on Ubuntu Trusty.

[regression] Arbitrary initialization of VideoDecodeBuffer::flag causes incorrect AVC/HEVC decoding

Arbitrary initialized VideoDecodeBuffer in VppInputDecode::read can result in invalid AVC/HEVC decoding since libyami commit:

commit 83f9fa79c856cebf98ca9b0d6dfc0b0acba9f443
Author: XuGuangxin <[email protected]>
Date:   Fri May 4 12:44:00 2018 +0800

    h264, h265: add VIDEO_DECODE_BUFFER_FLAG_FRAME_END to inidicate frame end
    
    unless we got AUD or SPS/PPS in stream, we can't know we have a frame.
    but in up level, we may know we have entire frame. so we add a frame to
    tell decoder about this

The arbitrary value can erroneously trigger VIDEO_DECODE_BUFFER_FLAG_FRAME_END in AVC/HEVC decoder, resulting in wrong decode output or decode errors.

Replace AVStream embedded codec context with AVCodecParameters instance

When building libyami-utils with -Werror=deprecated-declarations, the build fails because AVStream::codec is considered deprecated in libav upstream.

Those problems are resolved by replacing the AVStream embedded codec
context with a newly added AVCodecParameters instance, which stores only
the stream parameters exported by the demuxers or read by the muxers.

https://listsMaking all in examples
make[2]: Entering directory '/home/seanvk/dev/github/libyami-utils/examples'
  CXX      simpleplayer.o
  CXX      ../tests/decodeinput.o
  CXX      ../tests/decodeinputavformat.o
../tests/decodeinputavformat.cpp: In member function ‘virtual bool DecodeInputAvFormat::initInput(const char*)’:
../tests/decodeinputavformat.cpp:44:55: error: ‘AVStream::codec’ is deprecated [-Werror=deprecated-declarations]
         AVCodecContext* codec = m_format->streams[i]->codec;
                                                       ^~~~~
In file included from ../tests/decodeinputavformat.h:22:0,
                 from ../tests/decodeinputavformat.cpp:20:
/opt/libva/master/include/libavformat/avformat.h:712:21: note: declared here
     AVCodecContext *codec;
                     ^~~~~
../tests/decodeinputavformat.cpp:44:55: error: ‘AVStream::codec’ is deprecated [-Werror=deprecated-declarations]
         AVCodecContext* codec = m_format->streams[i]->codec;
                                                       ^~~~~
In file included from ../tests/decodeinputavformat.h:22:0,
                 from ../tests/decodeinputavformat.cpp:20:
/opt/libva/master/include/libavformat/avformat.h:712:21: note: declared here
     AVCodecContext *codec;
                     ^~~~~
../tests/decodeinputavformat.cpp:44:55: error: ‘AVStream::codec’ is deprecated [-Werror=deprecated-declarations]
         AVCodecContext* codec = m_format->streams[i]->codec;
                                                       ^~~~~
In file included from ../tests/decodeinputavformat.h:22:0,
                 from ../tests/decodeinputavformat.cpp:20:
/opt/libva/master/include/libavformat/avformat.h:712:21: note: declared here
     AVCodecContext *codec;
                     ^~~~~
../tests/decodeinputavformat.cpp:62:55: error: ‘AVStream::codec’ is deprecated [-Werror=deprecated-declarations]
         AVCodecContext* codec = m_format->streams[i]->codec;
                                                       ^~~~~
In file included from ../tests/decodeinputavformat.h:22:0,
                 from ../tests/decodeinputavformat.cpp:20:
/opt/libva/master/include/libavformat/avformat.h:712:21: note: declared here
     AVCodecContext *codec;
                     ^~~~~
../tests/decodeinputavformat.cpp:62:55: error: ‘AVStream::codec’ is deprecated [-Werror=deprecated-declarations]
         AVCodecContext* codec = m_format->streams[i]->codec;
                                                       ^~~~~
In file included from ../tests/decodeinputavformat.h:22:0,
                 from ../tests/decodeinputavformat.cpp:20:
/opt/libva/master/include/libavformat/avformat.h:712:21: note: declared here
     AVCodecContext *codec;
                     ^~~~~
../tests/decodeinputavformat.cpp:62:55: error: ‘AVStream::codec’ is deprecated [-Werror=deprecated-declarations]
         AVCodecContext* codec = m_format->streams[i]->codec;
                                                       ^~~~~
In file included from ../tests/decodeinputavformat.h:22:0,
                 from ../tests/decodeinputavformat.cpp:20:
/opt/libva/master/include/libavformat/avformat.h:712:21: note: declared here
     AVCodecContext *codec;
                     ^~~~~
../tests/decodeinputavformat.cpp: At global scope:
../tests/decodeinputavformat.cpp:106:5: error: ‘AV_CODEC_ID_H265’ was not declared in this scope
     AV_CODEC_ID_H265, YAMI_MIME_H265,
.libav.org/pipermail/libav-commits/2016-February/018031.html

Fails to build from source with --disable-x11

libyami-utils fails to build with "--disable-x11". It does build with "--disable-x11 --disable-tests-gles". Tested on 1.1.0 release only (on Yocto if that matters).

Here's the failure:

| In file included from ../../libyami-utils-1.1.0/tests/egl/gles2_help.c:26:0:
| ../../libyami-utils-1.1.0/tests/egl/gles2_help.h:61:25: error: unknown type name 'Display'
|  EGLContextType* eglInit(Display *x11Display, XID window, uint32_t fourcc, int isExternalTexture);
|                          ^~~~~~~
| ../../libyami-utils-1.1.0/tests/egl/gles2_help.h:61:46: error: unknown type name 'XID'
|  EGLContextType* eglInit(Display *x11Display, XID window, uint32_t fourcc, int isExternalTexture);
|                                               ^~~
| ../../libyami-utils-1.1.0/tests/egl/gles2_help.h:63:57: error: unknown type name 'XID'
|  GLuint createTextureFromPixmap(EGLContextType *context, XID pixmap);
|                                                          ^~~
| ../../libyami-utils-1.1.0/tests/egl/gles2_help.c:92:50: error: unknown type name 'XID'
|  createTextureFromPixmap(EGLContextType *context, XID pixmap)
|                                                   ^~~
| ../../libyami-utils-1.1.0/tests/egl/gles2_help.c:260:25: error: unknown type name 'Display'
|  EGLContextType *eglInit(Display *x11Display, XID x11Window, uint32_t fourcc, int isExternalTexture)
|                          ^~~~~~~
| ../../libyami-utils-1.1.0/tests/egl/gles2_help.c:260:46: error: unknown type name 'XID'
|  EGLContextType *eglInit(Display *x11Display, XID x11Window, uint32_t fourcc, int isExternalTexture)
|                                               ^~~
| Makefile:719: recipe for target 'egl/gles2_help.o' failed
| make[2]: *** [egl/gles2_help.o] Error 1
| make[2]: *** Waiting for unfinished jobs....
| In file included from ../../libyami-utils-1.1.0/tests/decodeoutput.cpp:45:0:
| ../../libyami-utils-1.1.0/tests/./egl/gles2_help.h:61:25: error: 'Display' was not declared in this scope
|  EGLContextType* eglInit(Display *x11Display, XID window, uint32_t fourcc, int isExternalTexture);
|                          ^~~~~~~
| ../../libyami-utils-1.1.0/tests/./egl/gles2_help.h:61:34: error: 'x11Display' was not declared in this scope
|  EGLContextType* eglInit(Display *x11Display, XID window, uint32_t fourcc, int isExternalTexture);
|                                   ^~~~~~~~~~
| ../../libyami-utils-1.1.0/tests/./egl/gles2_help.h:61:46: error: 'XID' was not declared in this scope
|  EGLContextType* eglInit(Display *x11Display, XID window, uint32_t fourcc, int isExternalTexture);
|                                               ^~~
| ../../libyami-utils-1.1.0/tests/./egl/gles2_help.h:61:67: error: expected primary-expression before 'fourcc'
|  EGLContextType* eglInit(Display *x11Display, XID window, uint32_t fourcc, int isExternalTexture);
|                                                                    ^~~~~~
| ../../libyami-utils-1.1.0/tests/./egl/gles2_help.h:61:75: error: expected primary-expression before 'int'
|  EGLContextType* eglInit(Display *x11Display, XID window, uint32_t fourcc, int isExternalTexture);
|                                                                            ^~~
| ../../libyami-utils-1.1.0/tests/./egl/gles2_help.h:61:96: error: expression list treated as compound expression in initializer [-fpermissive]
|  EGLContextType* eglInit(Display *x11Display, XID window, uint32_t fourcc, int isExternalTexture);
|                                                                                                 ^
| ../../libyami-utils-1.1.0/tests/./egl/gles2_help.h:63:57: error: 'XID' has not been declared
|  GLuint createTextureFromPixmap(EGLContextType *context, XID pixmap);
|                                                          ^~~
| Makefile:743: recipe for target 'decodeoutput.o' failed

Compile error: av_register_all is deprecated

Compilation fails with FFMpeg master since commit FFmpeg/FFmpeg@0694d87

../tests/decodeinputavformat.cpp: In constructor ‘DecodeInputAvFormat::DecodeInputAvFormat()’:
../tests/decodeinputavformat.cpp:32:21: error: ‘void av_register_all()’ is deprecated [-Werror=deprecated-declarations]
     av_register_all();
                     ^
In file included from ../tests/decodeinputavformat.h:22:0,
                 from ../tests/decodeinputavformat.cpp:20:
/home/uaeoff/Work/workspace/media/install/include/libavformat/avformat.h:2024:6: note: declared here
 void av_register_all(void);
      ^~~~~~~~~~~~~~~
../tests/decodeinputavformat.cpp: In constructor ‘DecodeInputAvFormat::DecodeInputAvFormat()’:
../tests/decodeinputavformat.cpp:32:21: error: ‘void av_register_all()’ is deprecated [-Werror=deprecated-declarations]
     av_register_all();
                     ^
In file included from ../tests/decodeinputavformat.h:22:0,
                 from ../tests/decodeinputavformat.cpp:20:
/home/uaeoff/Work/workspace/media/install/include/libavformat/avformat.h:2024:6: note: declared here
 void av_register_all(void);
      ^~~~~~~~~~~~~~~
cc1plus: all warnings being treated as errors
make[2]: *** [Makefile:667: ../tests/grid-decodeinputavformat.o] Error 1
make[2]: *** Waiting for unfinished jobs....
cc1plus: all warnings being treated as errors
make[2]: *** [Makefile:615: ../tests/decodeinputavformat.o] Error 1

yamitranscode gives 10-15% performance difference from run to run

Consider running the following:

for i in `seq 1 20`; do
/usr/bin/time -f "%e;%U;%S;%P" -a --output="log.txt" \
yamitranscode \
  -i input_1920x1080p.264 \
  -o out.264 \
  -W 1920 -H 1080 \
  -c AVC \
  -ipperiod 1 \
  -intraperiod 30 \
  --rcmode CQP \
  -qp 25
done

On SKL NUC I observe:

$ cat log_.txt
17.53;1.62;1.26;16%
15.62;1.65;1.24;18%
17.35;1.62;1.24;16%
15.63;1.65;1.28;18%
17.33;1.65;1.25;16%
15.63;1.63;1.28;18%
17.36;1.63;1.24;16%
15.63;1.69;1.22;18%
17.35;1.66;1.23;16%
15.63;1.72;1.22;18%
17.35;1.69;1.19;16%
15.63;1.65;1.26;18%
17.35;1.66;1.21;16%
15.61;1.65;1.27;18%
17.34;1.67;1.22;16%
15.63;1.68;1.24;18%
17.35;1.65;1.22;16%
15.63;1.68;1.23;18%
17.34;1.63;1.23;16%
15.65;1.69;1.26;18%
17.35;1.65;1.24;16%

Looks like yamitranscode has 10-15% variations in performance from run to run.

remove common/v4l2_wrapper.h

common/v4l2_wrapper.h is provided by libyami as an installed public header. The one in libyami-utils does not match the one in libyami and should be removed.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.