GST_DEBUG_CATEGORY_STATIC (wavparse_debug);
#define GST_CAT_DEFAULT (wavparse_debug)
-#define GST_RIFF_TAG_Fake GST_MAKE_FOURCC ('F','a','k','e')
-
-#define GST_BWF_TAG_iXML GST_MAKE_FOURCC ('i','X','M','L')
-#define GST_BWF_TAG_qlty GST_MAKE_FOURCC ('q','l','t','y')
-#define GST_BWF_TAG_mext GST_MAKE_FOURCC ('m','e','x','t')
-#define GST_BWF_TAG_levl GST_MAKE_FOURCC ('l','e','v','l')
-#define GST_BWF_TAG_link GST_MAKE_FOURCC ('l','i','n','k')
-#define GST_BWF_TAG_axml GST_MAKE_FOURCC ('a','x','m','l')
-
/* Data size chunk of RF64,
* see http://tech.ebu.ch/docs/tech/tech3306-2009.pdf */
#define GST_RS64_TAG_DS64 GST_MAKE_FOURCC ('d','s','6','4')
gint64 upstream_size = 0;
GstStructure *s;
- /* search for "_fmt" chunk, which should be first */
+ /* search for "_fmt" chunk, which must be before "data" */
while (!wav->got_fmt) {
GstBuffer *extra;
- /* The header starts with a 'fmt ' tag */
if (wav->streaming) {
if (!gst_wavparse_peek_chunk (wav, &tag, &size))
return res;
return res;
}
- if (tag == GST_RIFF_TAG_JUNK || tag == GST_RIFF_TAG_JUNQ ||
- tag == GST_RIFF_TAG_bext || tag == GST_RIFF_TAG_BEXT ||
- tag == GST_RIFF_TAG_LIST || tag == GST_RIFF_TAG_ID32 ||
- tag == GST_RIFF_TAG_id3 || tag == GST_RIFF_TAG_IDVX ||
- tag == GST_BWF_TAG_iXML || tag == GST_BWF_TAG_qlty ||
- tag == GST_BWF_TAG_mext || tag == GST_BWF_TAG_levl ||
- tag == GST_BWF_TAG_link || tag == GST_BWF_TAG_axml ||
- tag == GST_RIFF_TAG_Fake) {
- GST_DEBUG_OBJECT (wav, "skipping %" GST_FOURCC_FORMAT " chunk",
- GST_FOURCC_ARGS (tag));
- gst_buffer_unref (buf);
- buf = NULL;
- continue;
- }
-
if (tag == GST_RS64_TAG_DS64) {
if (!parse_ds64 (wav, buf))
goto fail;
continue;
}
- if (tag != GST_RIFF_TAG_fmt)
- goto invalid_wav;
+ if (tag != GST_RIFF_TAG_fmt) {
+ GST_DEBUG_OBJECT (wav, "skipping %" GST_FOURCC_FORMAT " chunk",
+ GST_FOURCC_ARGS (tag));
+ gst_buffer_unref (buf);
+ buf = NULL;
+ continue;
+ }
if (!(gst_riff_parse_strf_auds (GST_ELEMENT_CAST (wav), buf, &header,
&extra)))
res = GST_FLOW_ERROR;
goto exit;
}
-invalid_wav:
- {
- GST_ELEMENT_ERROR (wav, STREAM, TYPE_NOT_FOUND, (NULL),
- ("Invalid WAV header (no fmt at start): %"
- GST_FOURCC_FORMAT, GST_FOURCC_ARGS (tag)));
- goto fail;
- }
parse_header_error:
{
GST_ELEMENT_ERROR (wav, STREAM, DEMUX, (NULL),