1*4882a593SmuzhiyunFrom ec1c7a12bfbe6615f23dc8411beb3417f93839b7 Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: Jeffy Chen <jeffy.chen@rock-chips.com>
3*4882a593SmuzhiyunDate: Tue, 11 Jun 2019 10:19:22 +0800
4*4882a593SmuzhiyunSubject: [PATCH 03/12] autodetect: Add preferred for
5*4882a593Smuzhiyun autovideosink/autoaudiosink
6*4882a593Smuzhiyun
7*4882a593SmuzhiyunSigned-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
8*4882a593Smuzhiyun---
9*4882a593Smuzhiyun gst/autodetect/gstautoaudiosink.c |  3 +++
10*4882a593Smuzhiyun gst/autodetect/gstautodetect.c    | 14 ++++++++++++++
11*4882a593Smuzhiyun gst/autodetect/gstautodetect.h    |  1 +
12*4882a593Smuzhiyun gst/autodetect/gstautovideosink.c |  3 +++
13*4882a593Smuzhiyun 4 files changed, 21 insertions(+)
14*4882a593Smuzhiyun
15*4882a593Smuzhiyundiff --git a/gst/autodetect/gstautoaudiosink.c b/gst/autodetect/gstautoaudiosink.c
16*4882a593Smuzhiyunindex 5c18972..088c83e 100644
17*4882a593Smuzhiyun--- a/gst/autodetect/gstautoaudiosink.c
18*4882a593Smuzhiyun+++ b/gst/autodetect/gstautoaudiosink.c
19*4882a593Smuzhiyun@@ -39,6 +39,8 @@
20*4882a593Smuzhiyun #include "config.h"
21*4882a593Smuzhiyun #endif
22*4882a593Smuzhiyun
23*4882a593Smuzhiyun+#include <stdlib.h>
24*4882a593Smuzhiyun+
25*4882a593Smuzhiyun #include "gstautodetectelements.h"
26*4882a593Smuzhiyun #include "gstautodetect.h"
27*4882a593Smuzhiyun #include "gstautoaudiosink.h"
28*4882a593Smuzhiyun@@ -99,6 +101,7 @@ gst_auto_audio_sink_init (GstAutoAudioSink * sink)
29*4882a593Smuzhiyun
30*4882a593Smuzhiyun   autodetect->media_klass = "Audio";
31*4882a593Smuzhiyun   autodetect->flag = GST_ELEMENT_FLAG_SINK;
32*4882a593Smuzhiyun+  autodetect->preferred = g_getenv ("AUTOAUDIOSINK_PREFERRED");
33*4882a593Smuzhiyun
34*4882a593Smuzhiyun   sink->ts_offset = DEFAULT_TS_OFFSET;
35*4882a593Smuzhiyun }
36*4882a593Smuzhiyundiff --git a/gst/autodetect/gstautodetect.c b/gst/autodetect/gstautodetect.c
37*4882a593Smuzhiyunindex 864d465..56ce69d 100644
38*4882a593Smuzhiyun--- a/gst/autodetect/gstautodetect.c
39*4882a593Smuzhiyun+++ b/gst/autodetect/gstautodetect.c
40*4882a593Smuzhiyun@@ -273,6 +273,20 @@ gst_auto_detect_find_best (GstAutoDetect * self)
41*4882a593Smuzhiyun   GST_LOG_OBJECT (self, "Trying to find usable %s elements ...",
42*4882a593Smuzhiyun       self->media_klass_lc);
43*4882a593Smuzhiyun
44*4882a593Smuzhiyun+  if (self->preferred) {
45*4882a593Smuzhiyun+    for (item = list; item != NULL; item = item->next) {
46*4882a593Smuzhiyun+      GstElementFactory *f = GST_ELEMENT_FACTORY (item->data);
47*4882a593Smuzhiyun+
48*4882a593Smuzhiyun+      if (!strcmp (self->preferred, GST_OBJECT_NAME (f))) {
49*4882a593Smuzhiyun+        GST_DEBUG_OBJECT (self, "Preferred %s", GST_OBJECT_NAME (f));
50*4882a593Smuzhiyun+
51*4882a593Smuzhiyun+        list = g_list_delete_link (list, item);
52*4882a593Smuzhiyun+        list = g_list_prepend (list, f);
53*4882a593Smuzhiyun+        break;
54*4882a593Smuzhiyun+      }
55*4882a593Smuzhiyun+    }
56*4882a593Smuzhiyun+  }
57*4882a593Smuzhiyun+
58*4882a593Smuzhiyun   for (item = list; item != NULL; item = item->next) {
59*4882a593Smuzhiyun     GstElementFactory *f = GST_ELEMENT_FACTORY (item->data);
60*4882a593Smuzhiyun     GstElement *el;
61*4882a593Smuzhiyundiff --git a/gst/autodetect/gstautodetect.h b/gst/autodetect/gstautodetect.h
62*4882a593Smuzhiyunindex 3f54c14..85731c0 100644
63*4882a593Smuzhiyun--- a/gst/autodetect/gstautodetect.h
64*4882a593Smuzhiyun+++ b/gst/autodetect/gstautodetect.h
65*4882a593Smuzhiyun@@ -41,6 +41,7 @@ typedef struct _GstAutoDetect {
66*4882a593Smuzhiyun   GstBin parent;
67*4882a593Smuzhiyun
68*4882a593Smuzhiyun   /* configuration for subclasses */
69*4882a593Smuzhiyun+  const gchar *preferred;
70*4882a593Smuzhiyun   const gchar *media_klass; /* Audio/Video/... */
71*4882a593Smuzhiyun   GstElementFlags flag; /* GST_ELEMENT_FLAG_{SINK/SOURCE} */
72*4882a593Smuzhiyun
73*4882a593Smuzhiyundiff --git a/gst/autodetect/gstautovideosink.c b/gst/autodetect/gstautovideosink.c
74*4882a593Smuzhiyunindex b3eaf1f..545e21c 100644
75*4882a593Smuzhiyun--- a/gst/autodetect/gstautovideosink.c
76*4882a593Smuzhiyun+++ b/gst/autodetect/gstautovideosink.c
77*4882a593Smuzhiyun@@ -39,6 +39,8 @@
78*4882a593Smuzhiyun #include "config.h"
79*4882a593Smuzhiyun #endif
80*4882a593Smuzhiyun
81*4882a593Smuzhiyun+#include <stdlib.h>
82*4882a593Smuzhiyun+
83*4882a593Smuzhiyun #include "gstautodetectelements.h"
84*4882a593Smuzhiyun #include "gstautodetect.h"
85*4882a593Smuzhiyun #include "gstautovideosink.h"
86*4882a593Smuzhiyun@@ -99,6 +101,7 @@ gst_auto_video_sink_init (GstAutoVideoSink * sink)
87*4882a593Smuzhiyun
88*4882a593Smuzhiyun   autodetect->media_klass = "Video";
89*4882a593Smuzhiyun   autodetect->flag = GST_ELEMENT_FLAG_SINK;
90*4882a593Smuzhiyun+  autodetect->preferred = g_getenv ("AUTOVIDEOSINK_PREFERRED");
91*4882a593Smuzhiyun
92*4882a593Smuzhiyun   sink->ts_offset = DEFAULT_TS_OFFSET;
93*4882a593Smuzhiyun }
94*4882a593Smuzhiyun--
95*4882a593Smuzhiyun2.20.1
96*4882a593Smuzhiyun
97