tag_list_from_vorbiscomment_packet (ogg_packet * packet,
const guint8 * id_data, const guint id_data_length, GstTagList ** tags)
{
- GstBuffer *buf = NULL;
gchar *encoder = NULL;
GstTagList *list;
gboolean ret = TRUE;
g_return_val_if_fail (tags != NULL, FALSE);
- buf = gst_buffer_new ();
- GST_BUFFER_DATA (buf) = (guint8 *) packet->packet;
- GST_BUFFER_SIZE (buf) = packet->bytes;
-
- list = gst_tag_list_from_vorbiscomment_buffer (buf, id_data, id_data_length,
- &encoder);
+ list = gst_tag_list_from_vorbiscomment (packet->packet, packet->bytes,
+ id_data, id_data_length, &encoder);
if (!list) {
GST_WARNING ("failed to decode vorbis comments");
gst_tag_list_free (*tags);
*tags = list;
- gst_buffer_unref (buf);
-
return ret;
}
pad->theora_has_zero_keyoffset =
((vmaj << 16) | (vmin << 8) | vrev) < 0x030201;
- pad->caps = gst_caps_new_simple ("video/x-theora", NULL);
+ pad->caps = gst_caps_new_empty_simple ("video/x-theora");
if (w > 0 && h > 0) {
gst_caps_set_simple (pad->caps, "width", G_TYPE_INT, w, "height",
(const guint8 *) "\201theora", 7, &pad->taglist);
if (!pad->taglist)
- pad->taglist = gst_tag_list_new ();
+ pad->taglist = gst_tag_list_new_empty ();
if (pad->bitrate)
gst_tag_list_add (pad->taglist, GST_TAG_MERGE_REPLACE,
(const guint8 *) "\003vorbis", 7, &pad->taglist);
if (!pad->taglist)
- pad->taglist = gst_tag_list_new ();
+ pad->taglist = gst_tag_list_new_empty ();
gst_tag_list_add (pad->taglist, GST_TAG_MERGE_REPLACE,
GST_TAG_ENCODER_VERSION, pad->version, NULL);
tag_list_from_vorbiscomment_packet (packet, NULL, 0, &pad->taglist);
if (!pad->taglist)
- pad->taglist = gst_tag_list_new ();
+ pad->taglist = gst_tag_list_new_empty ();
if (pad->bitrate)
gst_tag_list_add (pad->taglist, GST_TAG_MERGE_REPLACE,
pad->n_header_packets = 3;
- pad->caps = gst_caps_new_simple ("audio/x-flac", NULL);
+ pad->caps = gst_caps_new_empty_simple ("audio/x-flac");
return TRUE;
}
pad->is_skeleton = TRUE;
pad->is_sparse = TRUE;
- pad->caps = gst_caps_new_simple ("application/x-ogg-skeleton", NULL);
+ pad->caps = gst_caps_new_empty_simple ("application/x-ogg-skeleton");
return TRUE;
}
{
guint8 *data = packet->packet;
guint32 fourcc;
+ gchar *fstr;
pad->granulerate_n = GST_READ_UINT64_LE (data + 25);
pad->granulerate_d = 1;
fourcc = GST_READ_UINT32_LE (data + 9);
- GST_DEBUG ("fourcc: %" GST_FOURCC_FORMAT, GST_FOURCC_ARGS (fourcc));
+ fstr = g_strdup_printf ("%" GST_FOURCC_FORMAT, GST_FOURCC_ARGS (fourcc));
+ GST_DEBUG ("fourcc: %s", fstr);
pad->caps = gst_riff_create_audio_caps (fourcc, NULL, NULL, NULL, NULL, NULL);
"rate", G_TYPE_INT, pad->granulerate_n, NULL);
} else {
pad->caps = gst_caps_new_simple ("audio/x-ogm-unknown",
- "fourcc", GST_TYPE_FOURCC, fourcc,
+ "fourcc", G_TYPE_STRING, fstr,
"rate", G_TYPE_INT, pad->granulerate_n, NULL);
}
+ g_free (fstr);
pad->n_header_packets = 1;
pad->is_ogm = TRUE;
guint32 fourcc;
int width, height;
gint64 time_unit;
+ gchar *fstr;
GST_DEBUG ("time unit %d", GST_READ_UINT32_LE (data + 16));
GST_DEBUG ("samples per unit %d", GST_READ_UINT32_LE (data + 24));
fourcc = GST_READ_UINT32_LE (data + 9);
width = GST_READ_UINT32_LE (data + 45);
height = GST_READ_UINT32_LE (data + 49);
- GST_DEBUG ("fourcc: %" GST_FOURCC_FORMAT, GST_FOURCC_ARGS (fourcc));
+ fstr = g_strdup_printf ("%" GST_FOURCC_FORMAT, GST_FOURCC_ARGS (fourcc));
+ GST_DEBUG ("fourcc: %s", fstr);
pad->caps = gst_riff_create_video_caps (fourcc, NULL, NULL, NULL, NULL, NULL);
if (pad->caps == NULL) {
pad->caps = gst_caps_new_simple ("video/x-ogm-unknown",
- "fourcc", GST_TYPE_FOURCC, fourcc,
+ "fourcc", G_TYPE_STRING, fstr,
"framerate", GST_TYPE_FRACTION, pad->granulerate_n,
pad->granulerate_d, NULL);
} else {
"width", G_TYPE_INT, width, "height", G_TYPE_INT, height, NULL);
}
GST_DEBUG ("caps: %" GST_PTR_FORMAT, pad->caps);
+ g_free (fstr);
pad->n_header_packets = 1;
pad->frame_size = 1;
if (pad->granulerate_d <= 0)
return FALSE;
- pad->caps = gst_caps_new_simple ("text/plain", NULL);
+ pad->caps = gst_caps_new_empty_simple ("text/plain");
pad->n_header_packets = 1;
pad->is_ogm = TRUE;
switch (format) {
case OGGPCM_FMT_S8:
- caps = gst_caps_new_simple ("audio/x-raw-int",
- "depth", G_TYPE_INT, 8,
- "width", G_TYPE_INT, 8, "signed", G_TYPE_BOOLEAN, TRUE, NULL);
+ caps = gst_caps_new_simple ("audio/x-raw",
+ "format", G_TYPE_STRING, "S8", NULL);
break;
case OGGPCM_FMT_U8:
- caps = gst_caps_new_simple ("audio/x-raw-int",
- "depth", G_TYPE_INT, 8,
- "width", G_TYPE_INT, 8, "signed", G_TYPE_BOOLEAN, FALSE, NULL);
+ caps = gst_caps_new_simple ("audio/x-raw",
+ "format", G_TYPE_STRING, "U8", NULL);
break;
case OGGPCM_FMT_S16_LE:
- caps = gst_caps_new_simple ("audio/x-raw-int",
- "depth", G_TYPE_INT, 16,
- "width", G_TYPE_INT, 16,
- "endianness", G_TYPE_INT, G_LITTLE_ENDIAN,
- "signed", G_TYPE_BOOLEAN, TRUE, NULL);
+ caps = gst_caps_new_simple ("audio/x-raw",
+ "format", G_TYPE_STRING, "S16LE", NULL);
break;
case OGGPCM_FMT_S16_BE:
- caps = gst_caps_new_simple ("audio/x-raw-int",
- "depth", G_TYPE_INT, 16,
- "width", G_TYPE_INT, 16,
- "endianness", G_TYPE_INT, G_BIG_ENDIAN,
- "signed", G_TYPE_BOOLEAN, TRUE, NULL);
+ caps = gst_caps_new_simple ("audio/x-raw",
+ "format", G_TYPE_STRING, "S16BE", NULL);
break;
case OGGPCM_FMT_S24_LE:
- caps = gst_caps_new_simple ("audio/x-raw-int",
- "depth", G_TYPE_INT, 24,
- "width", G_TYPE_INT, 24,
- "endianness", G_TYPE_INT, G_LITTLE_ENDIAN,
- "signed", G_TYPE_BOOLEAN, TRUE, NULL);
+ caps = gst_caps_new_simple ("audio/x-raw",
+ "format", G_TYPE_STRING, "S24LE", NULL);
break;
case OGGPCM_FMT_S24_BE:
- caps = gst_caps_new_simple ("audio/x-raw-int",
- "depth", G_TYPE_INT, 24,
- "width", G_TYPE_INT, 24,
- "endianness", G_TYPE_INT, G_BIG_ENDIAN,
- "signed", G_TYPE_BOOLEAN, TRUE, NULL);
+ caps = gst_caps_new_simple ("audio/x-raw",
+ "format", G_TYPE_STRING, "S24BE", NULL);
break;
case OGGPCM_FMT_S32_LE:
- caps = gst_caps_new_simple ("audio/x-raw-int",
- "depth", G_TYPE_INT, 32,
- "width", G_TYPE_INT, 32,
- "endianness", G_TYPE_INT, G_LITTLE_ENDIAN,
- "signed", G_TYPE_BOOLEAN, TRUE, NULL);
+ caps = gst_caps_new_simple ("audio/x-raw",
+ "format", G_TYPE_STRING, "S32LE", NULL);
break;
case OGGPCM_FMT_S32_BE:
- caps = gst_caps_new_simple ("audio/x-raw-int",
- "depth", G_TYPE_INT, 32,
- "width", G_TYPE_INT, 32,
- "endianness", G_TYPE_INT, G_BIG_ENDIAN,
- "signed", G_TYPE_BOOLEAN, TRUE, NULL);
+ caps = gst_caps_new_simple ("audio/x-raw",
+ "format", G_TYPE_STRING, "S32BE", NULL);
break;
case OGGPCM_FMT_ULAW:
- caps = gst_caps_new_simple ("audio/x-mulaw", NULL);
+ caps = gst_caps_new_empty_simple ("audio/x-mulaw");
break;
case OGGPCM_FMT_ALAW:
- caps = gst_caps_new_simple ("audio/x-alaw", NULL);
+ caps = gst_caps_new_empty_simple ("audio/x-alaw");
break;
case OGGPCM_FMT_FLT32_LE:
- caps = gst_caps_new_simple ("audio/x-raw-float",
- "width", G_TYPE_INT, 32,
- "endianness", G_TYPE_INT, G_LITTLE_ENDIAN, NULL);
+ caps = gst_caps_new_simple ("audio/x-raw",
+ "format", G_TYPE_STRING, "F32LE", NULL);
break;
case OGGPCM_FMT_FLT32_BE:
- caps = gst_caps_new_simple ("audio/x-raw-float",
- "width", G_TYPE_INT, 32,
- "endianness", G_TYPE_INT, G_BIG_ENDIAN, NULL);
+ caps = gst_caps_new_simple ("audio/x-raw",
+ "format", G_TYPE_STRING, "F32BE", NULL);
break;
case OGGPCM_FMT_FLT64_LE:
- caps = gst_caps_new_simple ("audio/x-raw-float",
- "width", G_TYPE_INT, 64,
- "endianness", G_TYPE_INT, G_LITTLE_ENDIAN, NULL);
+ caps = gst_caps_new_simple ("audio/x-raw",
+ "format", G_TYPE_STRING, "F64LE", NULL);
break;
case OGGPCM_FMT_FLT64_BE:
- caps = gst_caps_new_simple ("audio/x-raw-float",
- "width", G_TYPE_INT, 64,
- "endianness", G_TYPE_INT, G_BIG_ENDIAN, NULL);
+ caps = gst_caps_new_simple ("audio/x-raw",
+ "format", G_TYPE_STRING, "F64BE", NULL);
break;
default:
return FALSE;
}
- gst_caps_set_simple (caps, "audio/x-raw-int",
+ gst_caps_set_simple (caps,
"rate", G_TYPE_INT, pad->granulerate_n,
"channels", G_TYPE_INT, channels, NULL);
pad->caps = caps;
GST_DEBUG ("blocksize0: %u", 1 << (data[0] >> 4));
GST_DEBUG ("blocksize1: %u", 1 << (data[0] & 0x0F));
- pad->caps = gst_caps_new_simple ("text/x-cmml", NULL);
+ pad->caps = gst_caps_new_empty_simple ("text/x-cmml");
pad->always_flush_page = TRUE;
pad->is_sparse = TRUE;
if (strcmp (category, "subtitles") == 0 || strcmp (category, "SUB") == 0 ||
strcmp (category, "spu-subtitles") == 0 ||
strcmp (category, "K-SPU") == 0) {
- pad->caps = gst_caps_new_simple ("subtitle/x-kate", NULL);
+ pad->caps = gst_caps_new_empty_simple ("subtitle/x-kate");
} else {
- pad->caps = gst_caps_new_simple ("application/x-kate", NULL);
+ pad->caps = gst_caps_new_empty_simple ("application/x-kate");
}
pad->is_sparse = TRUE;
g_strdelimit (language, NULL, '\0');
canonical = gst_tag_get_language_code_iso_639_1 (language);
if (canonical) {
- list = gst_tag_list_new_full (GST_TAG_LANGUAGE_CODE, canonical, NULL);
+ list = gst_tag_list_new (GST_TAG_LANGUAGE_CODE, canonical, NULL);
} else {
GST_WARNING ("Unknown or invalid language code %s, ignored", language);
}
},
{
"PCM ", 8, 0,
- "audio/x-raw-int",
+ "audio/x-raw",
setup_pcm_mapper,
NULL,
NULL,
gst_ogg_stream_setup_map_from_caps_headers (GstOggStream * pad,
const GstCaps * caps)
{
+ GstBuffer *buf;
const GstStructure *structure;
- const GstBuffer *buf;
const GValue *streamheader;
const GValue *first_element;
ogg_packet packet;
+ guint8 *data;
+ gsize size;
+ gboolean ret;
GST_INFO ("Checking streamheader on caps %" GST_PTR_FORMAT, caps);
}
buf = gst_value_get_buffer (first_element);
- if (buf == NULL || GST_BUFFER_SIZE (buf) == 0) {
+ if (buf == NULL) {
+ GST_ERROR ("no first streamheader buffer");
+ return FALSE;
+ }
+
+ data = gst_buffer_map (buf, &size, 0, GST_MAP_READ);
+ if (data == NULL || size == 0) {
GST_ERROR ("invalid first streamheader buffer");
return FALSE;
}
- GST_MEMDUMP ("streamheader", GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf));
+ GST_MEMDUMP ("streamheader", data, size);
- packet.packet = GST_BUFFER_DATA (buf);
- packet.bytes = GST_BUFFER_SIZE (buf);
+ packet.packet = data;
+ packet.bytes = size;
GST_INFO ("Found headers on caps, using those to determine type");
- return gst_ogg_stream_setup_map (pad, &packet);
+ ret = gst_ogg_stream_setup_map (pad, &packet);
+
+ gst_buffer_unmap (buf, data, size);
+
+ return ret;
}