It is possible to do multipass h.264 encoding with VAAPI, like with x.264, when 
it is saves stats log?

28.03.2014, 05:22, "Zhao Yakui" <[email protected]>:
> On Thu, 2014-03-27 at 10:46 -0600, Nik Orlov wrote:
>
>>  Hello! Thanks!
>>
>>  As I see, libva can use X11 or direct DRM, and it can`t use DRM when system 
>> has running X11. Am I right?
>>  I will have research (google) about relations between dri and drm.
>
> Hi, Nik
>
>     What Matt said is right. The libva can work with X11 or DRM.
> The h264encode example can show you how to use it without X11.
> Even when X11 is already started, the h264encode still can use the DRM
> to encode. The following code can be used to run the encoding with DRM.
> (It is found in the file of libva/test/common/va_display_drm.c)
> {
>     VADisplay va_dpy;
>     drm_fd = open("/dev/dri/card0", O_RDWR);
>     if (drm_fd < 0) {
>         fprintf(stderr, "error: can't open DRM connection!\n");
>         return NULL;
>     }
>     va_dpy = vaGetDisplayDRM(drm_fd);
> }
>
> Thanks.
>    Yakui
>
>>  27.03.2014, 20:01, "Matt Pekar" <[email protected]>:
>>>  I'm not sure of the exact relationship between dri and drm (maybe dri 
>>> became drm?), but you can use it/them to run libva without X.
>>>
>>>  In our code, we first attempt to initialize libva with X11 (for desktop 
>>> development), then a secondary attempt is made to initialize through DRM 
>>> (which is how our program runs in production).
>>>
>>>  The tricky part is that DRM requires some elevated permissions, and we 
>>> made some changes to the va_drm_auth.c file to accommodate that better for 
>>> us.
>>>
>>>  The code is something along these lines:
>>>
>>>  VADisplay va_display;
>>>
>>>  printf("attempting to connect through X");
>>>  Display* x11_display = XOpenDisplay(":0.0");
>>>  if(x11_display != NULL)
>>>  {
>>>  printf("connected through X");
>>>  va_display = vaGetDisplay(x11_display);
>>>  return;
>>>  }
>>>
>>>  printf("attempting to connect through drm");
>>>  int drm_fd = open("/dev/dri/card0", O_RDWR);
>>>  if (element->drm_fd > 0)
>>>  {
>>>  printf("connected through drm on /dev/dri/card0");
>>>
>>>  va_display = vaGetDisplayDRM(element->drm_fd);
>>>
>>>  return;
>>>  }
>>>
>>>  //error
>>>
>>>  On Thu, Mar 27, 2014 at 8:32 AM, Nik Orlov <[email protected]> wrote:
>>>>  Hello!
>>>>
>>>>  As I have read here (http://www.freedesktop.org/wiki/Software/vaapi/)
>>>>
>>>>  The current video decode/encode interface is window system independent, 
>>>> so that potentially it can be used with graphics sub-systems other than X. 
>>>> In a nutshell it is basically a scheme to pass various types of data 
>>>> buffers from the application to the GPU for decoding or encoding. Feedback 
>>>> on the API is greatly welcomed, as this is intended to be a community 
>>>> collaborative effort.
>>>>
>>>>  So, there is some way to setup debian or ubuntu without Xorg to use libva.
>>>>  Maybe someone show me right way? At the moment I don`t know 
>>>> infrustructure of libva.
>>>>
>>>>  There is schem from wiki 
>>>> (http://en.wikipedia.org/wiki/Video_Acceleration_API) 
>>>> http://en.wikipedia.org/wiki/File:Vaapi_illustration.svg
>>>>  I don`t understand VA Hardware Driver needs to use all DRILib, DRMLib and 
>>>> direct access to hardware OR it can use one of them?
>>>>
>>>>  According to sources of h264encoding test from libva-1.1.1 it uses some 
>>>> functions with display
>>>>
>>>>      va_dpy = va_open_display();
>>>>      va_status = vaInitialize(va_dpy, &major_ver, &minor_ver);
>>>>      CHECK_VASTATUS(va_status, "vaInitialize");
>>>>
>>>>  It seems I still Xorg to use this features, or there is another way?
>>>>
>>>>  --
>>>>  Ник Орлов mailto:[email protected]
>>>>  _______________________________________________
>>>>  Libva mailing list
>>>>  [email protected]
>>>>  http://lists.freedesktop.org/mailman/listinfo/libva

-- 
Ник Орлов mailto:[email protected]
_______________________________________________
Libva mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libva

Reply via email to