+ unsigned i_header;
+ MP4_GET3BYTES( i_header );
+
+ p_dac3->i_fscod = ( i_header >> 22 ) & 0x03;
+ p_dac3->i_bsid = ( i_header >> 17 ) & 0x01f;
+ p_dac3->i_bsmod = ( i_header >> 14 ) & 0x07;
+ p_dac3->i_acmod = ( i_header >> 11 ) & 0x07;
+ p_dac3->i_lfeon = ( i_header >> 10 ) & 0x01;
+ p_dac3->i_bitrate_code = ( i_header >> 5) & 0x1f;
+
+#ifdef MP4_VERBOSE
+ msg_Dbg( p_stream,
+ "read box: \"dac3\" fscod=0x%x bsid=0x%x bsmod=0x%x acmod=0x%x lfeon=0x%x bitrate_code=0x%x",
+ p_dac3->i_fscod, p_dac3->i_bsid, p_dac3->i_bsmod, p_dac3->i_acmod, p_dac3->i_lfeon, p_dac3->i_bitrate_code );
+#endif
+ MP4_READBOX_EXIT( 1 );
+}
+
+static int MP4_ReadBox_enda( stream_t *p_stream, MP4_Box_t *p_box )
+{
+ MP4_Box_data_enda_t *p_enda;
+ MP4_READBOX_ENTER( MP4_Box_data_enda_t );
+
+ p_enda = p_box->data.p_enda;
+
+ MP4_GET2BYTES( p_enda->i_little_endian );
+
+#ifdef MP4_VERBOSE
+ msg_Dbg( p_stream,
+ "read box: \"enda\" little_endian=%d", p_enda->i_little_endian );
+#endif
+ MP4_READBOX_EXIT( 1 );
+}
+
+static int MP4_ReadBox_gnre( stream_t *p_stream, MP4_Box_t *p_box )
+{
+ MP4_Box_data_gnre_t *p_gnre;
+ MP4_READBOX_ENTER( MP4_Box_data_gnre_t );
+
+ p_gnre = p_box->data.p_gnre;
+
+ uint32_t i_data_len;
+ uint32_t i_data_tag;
+
+ MP4_GET4BYTES( i_data_len );
+ MP4_GETFOURCC( i_data_tag );
+ if( i_data_len < 10 || i_data_tag != VLC_FOURCC('d', 'a', 't', 'a') )
+ MP4_READBOX_EXIT( 0 );
+
+ uint32_t i_version;
+ uint32_t i_reserved;
+ MP4_GET4BYTES( i_version );
+ MP4_GET4BYTES( i_reserved );
+ MP4_GET2BYTES( p_gnre->i_genre );
+ if( p_gnre->i_genre == 0 )
+ MP4_READBOX_EXIT( 0 );
+#ifdef MP4_VERBOSE
+ msg_Dbg( p_stream, "read box: \"gnre\" genre=%i", p_gnre->i_genre );
+#endif
+
+ MP4_READBOX_EXIT( 1 );
+}
+
+static int MP4_ReadBox_trkn( stream_t *p_stream, MP4_Box_t *p_box )
+{
+ MP4_Box_data_trkn_t *p_trkn;
+ MP4_READBOX_ENTER( MP4_Box_data_trkn_t );
+
+ p_trkn = p_box->data.p_trkn;
+
+ uint32_t i_data_len;
+ uint32_t i_data_tag;
+
+ MP4_GET4BYTES( i_data_len );
+ MP4_GETFOURCC( i_data_tag );
+ if( i_data_len < 12 || i_data_tag != VLC_FOURCC('d', 'a', 't', 'a') )
+ MP4_READBOX_EXIT( 0 );
+
+ uint32_t i_version;
+ uint32_t i_reserved;
+ MP4_GET4BYTES( i_version );
+ MP4_GET4BYTES( i_reserved );
+ MP4_GET4BYTES( p_trkn->i_track_number );
+#ifdef MP4_VERBOSE
+ msg_Dbg( p_stream, "read box: \"trkn\" number=%i", p_trkn->i_track_number );
+#endif
+ if( i_data_len > 15 )