mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-25 01:30:38 +00:00
dts: Use new audio encoder/decoder base class API for srcpad caps
This commit is contained in:
parent
18a21051a2
commit
73f50c5efa
1 changed files with 8 additions and 17 deletions
|
@ -88,12 +88,15 @@ typedef struct dts_state_s dca_state_t;
|
||||||
#if defined(LIBDTS_FIXED) || defined(LIBDCA_FIXED)
|
#if defined(LIBDTS_FIXED) || defined(LIBDCA_FIXED)
|
||||||
#define SAMPLE_WIDTH 16
|
#define SAMPLE_WIDTH 16
|
||||||
#define SAMPLE_FORMAT GST_AUDIO_NE(S16)
|
#define SAMPLE_FORMAT GST_AUDIO_NE(S16)
|
||||||
|
#define SAMPLE_TYPE GST_AUDIO_FORMAT_S16
|
||||||
#elif defined (LIBDTS_DOUBLE) || defined(LIBDCA_DOUBLE)
|
#elif defined (LIBDTS_DOUBLE) || defined(LIBDCA_DOUBLE)
|
||||||
#define SAMPLE_WIDTH 64
|
#define SAMPLE_WIDTH 64
|
||||||
#define SAMPLE_FORMAT GST_AUDIO_NE(F64)
|
#define SAMPLE_FORMAT GST_AUDIO_NE(F64)
|
||||||
|
#define SAMPLE_TYPE GST_AUDIO_FORMAT_F64
|
||||||
#else
|
#else
|
||||||
#define SAMPLE_WIDTH 32
|
#define SAMPLE_WIDTH 32
|
||||||
#define SAMPLE_FORMAT GST_AUDIO_NE(F32)
|
#define SAMPLE_FORMAT GST_AUDIO_NE(F32)
|
||||||
|
#define SAMPLE_TYPE GST_AUDIO_FORMAT_F32
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
GST_DEBUG_CATEGORY_STATIC (dtsdec_debug);
|
GST_DEBUG_CATEGORY_STATIC (dtsdec_debug);
|
||||||
|
@ -403,9 +406,9 @@ static gboolean
|
||||||
gst_dtsdec_renegotiate (GstDtsDec * dts)
|
gst_dtsdec_renegotiate (GstDtsDec * dts)
|
||||||
{
|
{
|
||||||
gint channels;
|
gint channels;
|
||||||
GstCaps *caps = NULL;
|
|
||||||
gboolean result = FALSE;
|
gboolean result = FALSE;
|
||||||
GstAudioChannelPosition from[6], to[6];
|
GstAudioChannelPosition from[6], to[6];
|
||||||
|
GstAudioInfo info;
|
||||||
|
|
||||||
channels = gst_dtsdec_channels (dts->using_channels, from);
|
channels = gst_dtsdec_channels (dts->using_channels, from);
|
||||||
|
|
||||||
|
@ -420,29 +423,17 @@ gst_dtsdec_renegotiate (GstDtsDec * dts)
|
||||||
gst_audio_get_channel_reorder_map (channels, from, to,
|
gst_audio_get_channel_reorder_map (channels, from, to,
|
||||||
dts->channel_reorder_map);
|
dts->channel_reorder_map);
|
||||||
|
|
||||||
caps = gst_caps_new_simple ("audio/x-raw",
|
|
||||||
"format", G_TYPE_STRING, SAMPLE_FORMAT,
|
|
||||||
"layout", G_TYPE_STRING, "interleaved",
|
|
||||||
"channels", G_TYPE_INT, channels,
|
|
||||||
"rate", G_TYPE_INT, dts->sample_rate, NULL);
|
|
||||||
|
|
||||||
if (channels > 1) {
|
gst_audio_info_init (&info);
|
||||||
guint64 channel_mask = 0;
|
gst_audio_info_set_format (&info,
|
||||||
|
SAMPLE_TYPE, dts->sample_rate, channels, (channels > 1 ? to : NULL));
|
||||||
|
|
||||||
gst_audio_channel_positions_to_mask (to, channels, &channel_mask);
|
if (!gst_audio_decoder_set_output_format (GST_AUDIO_DECODER (dts), &info))
|
||||||
gst_caps_set_simple (caps, "channel-mask", GST_TYPE_BITMASK, channel_mask,
|
|
||||||
NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!gst_audio_decoder_set_outcaps (GST_AUDIO_DECODER (dts), caps))
|
|
||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
result = TRUE;
|
result = TRUE;
|
||||||
|
|
||||||
done:
|
done:
|
||||||
if (caps) {
|
|
||||||
gst_caps_unref (caps);
|
|
||||||
}
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue