[FFmpeg-devel,2/7] ffmpeg_hw: Treat empty device string as no device setting

Submitted by Mark Thompson on May 6, 2019, 2:49 p.m.

Details

Message ID 20190506144928.28501-2-sw@jkqxz.net
State Accepted
Commit a4448637380d9397a7ea5d644e9853af90a66a89
Headers show

Commit Message

Mark Thompson May 6, 2019, 2:49 p.m.
The implementation will use some default in this case.  The empty string
is not a meaningful device for any existing hardware type, and indeed
OpenCL treats it identically to no device already to work around the lack
of this setting on the command line.
---
 fftools/ffmpeg_hw.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

Patch hide | download patch | download mbox

diff --git a/fftools/ffmpeg_hw.c b/fftools/ffmpeg_hw.c
index d454ae7179..962d8f7d5a 100644
--- a/fftools/ffmpeg_hw.c
+++ b/fftools/ffmpeg_hw.c
@@ -155,10 +155,12 @@  int hw_device_init_from_string(const char *arg, HWDevice **dev_out)
         ++p;
         q = strchr(p, ',');
         if (q) {
-            device = av_strndup(p, q - p);
-            if (!device) {
-                err = AVERROR(ENOMEM);
-                goto fail;
+            if (q - p > 0) {
+                device = av_strndup(p, q - p);
+                if (!device) {
+                    err = AVERROR(ENOMEM);
+                    goto fail;
+                }
             }
             err = av_dict_parse_string(&options, q + 1, "=", ",", 0);
             if (err < 0) {
@@ -168,7 +170,8 @@  int hw_device_init_from_string(const char *arg, HWDevice **dev_out)
         }
 
         err = av_hwdevice_ctx_create(&device_ref, type,
-                                     device ? device : p, options, 0);
+                                     q ? device : p[0] ? p : NULL,
+                                     options, 0);
         if (err < 0)
             goto fail;