+static int MP4_ReadBox_rdrf( MP4_Stream_t *p_stream, MP4_Box_t *p_box )
+{
+ uint32_t i_len;
+ MP4_READBOX_ENTER( MP4_Box_data_rdrf_t );
+
+ MP4_GETVERSIONFLAGS( p_box->data.p_rdrf );
+ MP4_GETFOURCC( p_box->data.p_rdrf->i_ref_type );
+ MP4_GET4BYTES( i_len );
+ if( i_len > 0 )
+ {
+ uint32_t i;
+ p_box->data.p_rdrf->psz_ref = malloc( i_len + 1);
+ for( i = 0; i < i_len; i++ )
+ {
+ MP4_GET1BYTE( p_box->data.p_rdrf->psz_ref[i] );
+ }
+ p_box->data.p_rdrf->psz_ref[i_len] = '\0';
+ }
+ else
+ {
+ p_box->data.p_rdrf->psz_ref = NULL;
+ }
+
+#ifdef MP4_VERBOSE
+ msg_Dbg( p_stream->p_input,
+ "Read Box: \"rdrf\" type:%4.4s ref %s",
+ (char*)&p_box->data.p_rdrf->i_ref_type,
+ p_box->data.p_rdrf->psz_ref );
+
+#endif
+ MP4_READBOX_EXIT( 1 );
+}
+
+static void MP4_FreeBox_rdrf( MP4_Box_t *p_box )
+{
+ FREE( p_box->data.p_rdrf->psz_ref )
+}
+
+
+static int MP4_ReadBox_rmdr( MP4_Stream_t *p_stream, MP4_Box_t *p_box )
+{
+ MP4_READBOX_ENTER( MP4_Box_data_rmdr_t );
+
+ MP4_GETVERSIONFLAGS( p_box->data.p_rmdr );
+
+ MP4_GET4BYTES( p_box->data.p_rmdr->i_rate );
+
+#ifdef MP4_VERBOSE
+ msg_Dbg( p_stream->p_input,
+ "Read Box: \"rmdr\" rate:%d",
+ p_box->data.p_rmdr->i_rate );
+#endif
+ MP4_READBOX_EXIT( 1 );
+}
+
+static int MP4_ReadBox_rmqu( MP4_Stream_t *p_stream, MP4_Box_t *p_box )
+{
+ MP4_READBOX_ENTER( MP4_Box_data_rmqu_t );
+
+ MP4_GET4BYTES( p_box->data.p_rmqu->i_quality );
+
+#ifdef MP4_VERBOSE
+ msg_Dbg( p_stream->p_input,
+ "Read Box: \"rmqu\" quality:%d",
+ p_box->data.p_rmqu->i_quality );
+#endif
+ MP4_READBOX_EXIT( 1 );
+}
+
+static int MP4_ReadBox_rmvc( MP4_Stream_t *p_stream, MP4_Box_t *p_box )
+{
+ MP4_READBOX_ENTER( MP4_Box_data_rmvc_t );
+ MP4_GETVERSIONFLAGS( p_box->data.p_rmvc );
+
+ MP4_GETFOURCC( p_box->data.p_rmvc->i_gestaltType );
+ MP4_GET4BYTES( p_box->data.p_rmvc->i_val1 );
+ MP4_GET4BYTES( p_box->data.p_rmvc->i_val2 );
+ MP4_GET2BYTES( p_box->data.p_rmvc->i_checkType );
+
+#ifdef MP4_VERBOSE
+ msg_Dbg( p_stream->p_input,
+ "Read Box: \"rmvc\" gestaltType:%4.4s val1:0x%x val2:0x%x checkType:0x%x",
+ (char*)&p_box->data.p_rmvc->i_gestaltType,
+ p_box->data.p_rmvc->i_val1,p_box->data.p_rmvc->i_val2,
+ p_box->data.p_rmvc->i_checkType );
+#endif
+
+ MP4_READBOX_EXIT( 1 );
+}
+
+static int MP4_ReadBox_iviv( MP4_Stream_t *p_stream, MP4_Box_t *p_box )
+{
+ MP4_READBOX_ENTER( uint8_t );
+
+ if( i_read >= sizeof(uint32_t) * 4 )
+ {
+ MP4_Box_t *p_drms_box = p_box;
+
+ do
+ {
+ p_drms_box = p_drms_box->p_father;
+ } while( p_drms_box && p_drms_box->i_type != FOURCC_drms );
+
+ if( p_drms_box && p_drms_box->data.p_sample_soun->p_drms )
+ {
+ if( drms_init( p_drms_box->data.p_sample_soun->p_drms,
+ DRMS_INIT_IVIV, p_peek, sizeof(uint32_t) * 4 ) )
+ {
+ drms_free( p_drms_box->data.p_sample_soun->p_drms );
+ p_drms_box->data.p_sample_soun->p_drms = NULL;
+ }
+ }
+ }
+
+ MP4_READBOX_EXIT( 1 );
+}
+
+static int MP4_ReadBox_name( MP4_Stream_t *p_stream, MP4_Box_t *p_box )
+{
+ MP4_Box_t *p_drms_box = p_box;
+
+ MP4_READBOX_ENTER( uint8_t );
+
+ do
+ {
+ p_drms_box = p_drms_box->p_father;
+ } while( p_drms_box && p_drms_box->i_type != FOURCC_drms );
+
+ if( p_drms_box && p_drms_box->data.p_sample_soun->p_drms )
+ {
+ if( drms_init( p_drms_box->data.p_sample_soun->p_drms,
+ DRMS_INIT_NAME, p_peek, strlen( p_peek ) ) )
+ {
+ drms_free( p_drms_box->data.p_sample_soun->p_drms );
+ p_drms_box->data.p_sample_soun->p_drms = NULL;
+ }
+ }
+
+ MP4_READBOX_EXIT( 1 );
+}
+
+static int MP4_ReadBox_priv( MP4_Stream_t *p_stream, MP4_Box_t *p_box )
+{
+ MP4_Box_t *p_drms_box = p_box;
+
+ MP4_READBOX_ENTER( uint8_t );
+
+ do
+ {
+ p_drms_box = p_drms_box->p_father;
+ } while( p_drms_box && p_drms_box->i_type != FOURCC_drms );
+
+ if( p_drms_box && p_drms_box->data.p_sample_soun->p_drms )
+ {
+ if( drms_init( p_drms_box->data.p_sample_soun->p_drms,
+ DRMS_INIT_PRIV, p_peek, i_read ) )
+ {
+ drms_free( p_drms_box->data.p_sample_soun->p_drms );
+ p_drms_box->data.p_sample_soun->p_drms = NULL;
+ }
+ }
+
+ MP4_READBOX_EXIT( 1 );
+}