+static void Ogg_ApplyContentType( logical_stream_t *p_stream, const char* psz_value,
+ bool *b_force_backup, bool *b_packet_out )
+{
+ if( !strncmp(psz_value, "audio/x-wav", 11) )
+ {
+ /* n.b. WAVs are unsupported right now */
+ p_stream->fmt.i_cat = UNKNOWN_ES;
+ free( p_stream->fmt.psz_description );
+ p_stream->fmt.psz_description = strdup("WAV Audio (Unsupported)");
+ }
+ else if( !strncmp(psz_value, "audio/x-vorbis", 14) ||
+ !strncmp(psz_value, "audio/vorbis", 12) )
+ {
+ p_stream->fmt.i_cat = AUDIO_ES;
+ p_stream->fmt.i_codec = VLC_CODEC_VORBIS;
+
+ *b_force_backup = true;
+ }
+ else if( !strncmp(psz_value, "audio/x-speex", 13) ||
+ !strncmp(psz_value, "audio/speex", 11) )
+ {
+ p_stream->fmt.i_cat = AUDIO_ES;
+ p_stream->fmt.i_codec = VLC_CODEC_SPEEX;
+
+ *b_force_backup = true;
+ }
+ else if( !strncmp(psz_value, "audio/flac", 10) )
+ {
+ p_stream->fmt.i_cat = AUDIO_ES;
+ p_stream->fmt.i_codec = VLC_CODEC_FLAC;
+
+ *b_force_backup = true;
+ }
+ else if( !strncmp(psz_value, "video/x-theora", 14) ||
+ !strncmp(psz_value, "video/theora", 12) )
+ {
+ p_stream->fmt.i_cat = VIDEO_ES;
+ p_stream->fmt.i_codec = VLC_CODEC_THEORA;
+
+ *b_force_backup = true;
+ }
+ else if( !strncmp(psz_value, "video/x-daala", 13) ||
+ !strncmp(psz_value, "video/daala", 11) )
+ {
+ p_stream->fmt.i_cat = VIDEO_ES;
+ p_stream->fmt.i_codec = VLC_CODEC_DAALA;
+
+ *b_force_backup = true;
+ }
+ else if( !strncmp(psz_value, "video/x-xvid", 12) )
+ {
+ p_stream->fmt.i_cat = VIDEO_ES;
+ p_stream->fmt.i_codec = VLC_FOURCC( 'x','v','i','d' );
+
+ *b_force_backup = true;
+ }
+ else if( !strncmp(psz_value, "video/mpeg", 10) )
+ {
+ /* n.b. MPEG streams are unsupported right now */
+ p_stream->fmt.i_cat = VIDEO_ES;
+ p_stream->fmt.i_codec = VLC_CODEC_MPGV;
+ }
+ else if( !strncmp(psz_value, "text/x-cmml", 11) ||
+ !strncmp(psz_value, "text/cmml", 9) )
+ {
+ p_stream->fmt.i_cat = SPU_ES;
+ p_stream->fmt.i_codec = VLC_CODEC_CMML;
+ *b_packet_out = true;
+ }
+ else if( !strncmp(psz_value, "application/kate", 16) )
+ {
+ /* ??? */
+ p_stream->fmt.i_cat = UNKNOWN_ES;
+ free( p_stream->fmt.psz_description );
+ p_stream->fmt.psz_description = strdup("OGG Kate Overlay (Unsupported)");
+ }
+ else if( !strncmp(psz_value, "video/x-vp8", 11) )
+ {
+ p_stream->fmt.i_cat = VIDEO_ES;
+ p_stream->fmt.i_codec = VLC_CODEC_VP8;
+ }
+}
+
+static void Ogg_ReadAnnodexHeader( demux_t *p_demux,