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