- Jul 12, 2021
-
-
Thomas Guillem authored
Contrary to all other hardware decoders, vaapi can't work with a hwaccel_context anymore. It requires a hw_device_ctx or a hw_frames_ctx to work. This first implementation use a hw_device_ctx and let avcodec handle its frames pool. It is also possible to handle hw_frames_ctx ourself to get more controls. Note: Most of the code could be reused by other va modules if we decide to a hw_device_ctx. Fixes #25707
-
Thomas Guillem authored
-
Thomas Guillem authored
The future vaapi va module will create AVFrame from hwframes_ctx with a frame->buf[0] set internally by avcodec. If this is the case, don't override it and use opaque_ref (an user field) to keep the reference on the VLC picture_t.
-
Thomas Guillem authored
frame->buf[0] must be valid but doesn't have to contain data since the data will be accessed via frame->data[] directly. Furthermore, all va modules are only setting frame->data[3], therefore, frame->data[0] was always NULL.
-
Thomas Guillem authored
Provide the AVCodecContext and the full AVFrame. It will be used by the new vaapi va module.
-
Steve Lhomme authored
It's already set as a read-only pointer in vd->cfg before calling Open().
-
Steve Lhomme authored
This allows using COM helpers and shorter API calls. It's already built with C++ from the sensor and DirectComposition handlers.
-
Steve Lhomme authored
-
Steve Lhomme authored
This is a C99 thing.
-
- Jul 11, 2021
-
-
qmlRegisterUncreatableType already registers the type to the meta object system.
-
-
this change allows selectedProfileControlListChanged signal to be emitted after the initial reload happens.
-
With Qt 5.0, a new syntax for signal/slot handling was introduced. This patch updates the related function call that tests if the signal is connected to its Qt 5 way of doing.
-
-
-
this allows to avoid code duplication between C++ and QML
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
The event reporting must happen one event at a time and never trigger behaviour not expected by the underlying application. It uses a custom runloop mode to ensure only the VLC aware code can use the runloop (and thus usually main thread) when reporting an event. It was ensured by calling CFRunLoopRunInMode until the runloop is stopped. But there were multiple undetected flaws in this: - CFRunLoopRunInMode will terminate (with timeout or finish) whenever one event have been processed, so it needs to be called in loop with the correct invariant. - CFRunLoopRunInMode with timeout=0 will exit even sooner if there are not events available. - CFRunLoopStop will interrupt CFRunLoopInMode only if it's actually running so there's an asynchronous design flaw where we try to stop the event loop from another thread without syncing with this event loop. This patch fixes those issues, though it adds some callback nightmares, by adding a new level of dispatch to the main CFRunLoop, which will be the one to call CFRunLoopStop on itself. Thus, the CFRunLoop must be in a running state when CFRunLoopStop is called. It also ensure that we don't leave the loop for another reason than calling CFRunLoopStop, eg. Timeout or Finish result code.
-
Switch the event queue used to a dedicated event queue which will create its own thread, instead of using QOS parallel queues, which prevents mixing with non-VLC tasks and ensure tasks are ordered.
-
-
And remove a useless cast from void*
-
That's the preferred output format for most codec and also with better DXGI display support.
-