small cleanup of appsrc construction.

This commit is contained in:
fduncanh
2022-04-25 13:52:29 -04:00
parent eedf8e44c4
commit 7e32cadaf4

View File

@@ -26,17 +26,17 @@
/* GStreamer Caps strings for Airplay-defined audio compression types (ct) */
/* ct = 1; linear PCM (uncompressed): 44100/16/2, S16LE */
static const char lpcm[]="audio/x-raw,rate=(int)44100,channels=(int)2,format=S16LE,layout=interleaved";
static const char lpcm_caps[]="audio/x-raw,rate=(int)44100,channels=(int)2,format=S16LE,layout=interleaved";
/* ct = 2; codec_data is ALAC magic cookie: 44100/16/2 spf = 352 */
static const char alac[] = "audio/x-alac,mpegversion=(int)4,channnels=(int)2,rate=(int)44100,stream-format=raw,codec_data=(buffer)"
static const char alac_caps[] = "audio/x-alac,mpegversion=(int)4,channnels=(int)2,rate=(int)44100,stream-format=raw,codec_data=(buffer)"
"00000024""616c6163""00000000""00000160""0010280a""0e0200ff""00000000""00000000""0000ac44";
/* ct = 4; codec_data from MPEG v4 ISO 14996-3 Section 1.6.2.1: AAC-LC 44100/2 spf = 1024 */
static const char aac_lc[] ="audio/mpeg,mpegversion=(int)4,channnels=(int)2,rate=(int)44100,stream-format=raw,codec_data=(buffer)1210";
static const char aac_lc_caps[] ="audio/mpeg,mpegversion=(int)4,channnels=(int)2,rate=(int)44100,stream-format=raw,codec_data=(buffer)1210";
/* ct = 8; codec_data from MPEG v4 ISO 14996-3 Section 1.6.2.1: AAC_ELD 44100/2 spf = 480 */
static const char aac_eld[] ="audio/mpeg,mpegversion=(int)4,channnels=(int)2,rate=(int)44100,stream-format=raw,codec_data=(buffer)f8e85000";
static const char aac_eld_caps[] ="audio/mpeg,mpegversion=(int)4,channnels=(int)2,rate=(int)44100,stream-format=raw,codec_data=(buffer)f8e85000";
typedef struct audio_renderer_s {
GstElement *appsrc;
@@ -85,7 +85,8 @@ void audio_renderer_init(logger_t *render_logger, const char* audiosink) {
for (int i = 0; i < NFORMATS ; i++) {
renderer_type[i] = (audio_renderer_t *) calloc(1,sizeof(audio_renderer_t));
assert(renderer_type[i]);
GString *launch = g_string_new("appsrc name=audio_source stream-type=0 format=GST_FORMAT_TIME is-live=true ! queue ! ");
GString *launch = g_string_new("appsrc name=audio_source ! ");
g_string_append(launch, "queue ! ");
switch (i) {
case 0: /* AAC-ELD */
case 2: /* AAC-LC */
@@ -111,28 +112,28 @@ void audio_renderer_init(logger_t *render_logger, const char* audiosink) {
renderer_type[i]->volume = gst_bin_get_by_name (GST_BIN (renderer_type[i]->pipeline), "volume");
switch (i) {
case 0:
caps = gst_caps_from_string(aac_eld);
caps = gst_caps_from_string(aac_eld_caps);
renderer_type[i]->ct = 8;
format[i] = "AAC-ELD 44100/2";
break;
case 1:
caps = gst_caps_from_string(alac);
caps = gst_caps_from_string(alac_caps);
renderer_type[i]->ct = 2;
format[i] = "ALAC 44100/16/2";
break;
case 2:
caps = gst_caps_from_string(aac_lc);
caps = gst_caps_from_string(aac_lc_caps);
renderer_type[i]->ct = 4;
format[i] = "AAC-LC 44100/2";
break;
case 3:
caps = gst_caps_from_string(lpcm);
caps = gst_caps_from_string(lpcm_caps);
renderer_type[i]->ct = 1;
format[i] = "PCM 44100/16/2 S16LE";
break;
}
logger_log(logger, LOGGER_DEBUG, "supported audio format %d: %s",i+1,format[i]);
g_object_set(renderer_type[i]->appsrc, "caps", caps, NULL);
g_object_set(renderer_type[i]->appsrc, "caps", caps, "stream-type", 0, "is-live", TRUE, "format", GST_FORMAT_TIME, NULL);
gst_caps_unref(caps);
}
}