return 1;
}
-static int MP4_ReadBox_name( stream_t *p_stream, MP4_Box_t *p_box )
+static int MP4_ReadBox_String( stream_t *p_stream, MP4_Box_t *p_box )
{
- MP4_READBOX_ENTER( MP4_Box_data_name_t );
+ MP4_READBOX_ENTER( MP4_Box_data_string_t );
- p_box->data.p_name->psz_text = malloc( p_box->i_size + 1 - 8 ); /* +\0, -name, -size */
- if( p_box->data.p_name->psz_text == NULL )
+ p_box->data.p_string->psz_text = malloc( p_box->i_size + 1 - 8 ); /* +\0, -name, -size */
+ if( p_box->data.p_string->psz_text == NULL )
MP4_READBOX_EXIT( 0 );
- memcpy( p_box->data.p_name->psz_text, p_peek, p_box->i_size - 8 );
- p_box->data.p_name->psz_text[p_box->i_size - 8] = '\0';
+ memcpy( p_box->data.p_string->psz_text, p_peek, p_box->i_size - 8 );
+ p_box->data.p_string->psz_text[p_box->i_size - 8] = '\0';
#ifdef MP4_VERBOSE
- msg_Dbg( p_stream, "read box: \"name\" text=`%s'",
- p_box->data.p_name->psz_text );
+ msg_Dbg( p_stream, "read box: \"%4.4s\" text=`%s'", (char *) & p_box->i_type,
+ p_box->data.p_string->psz_text );
#endif
MP4_READBOX_EXIT( 1 );
}
-static void MP4_FreeBox_name( MP4_Box_t *p_box )
+static void MP4_FreeBox_String( MP4_Box_t *p_box )
{
- FREENULL( p_box->data.p_name->psz_text );
+ FREENULL( p_box->data.p_string->psz_text );
}
static int MP4_ReadBox_data( stream_t *p_stream, MP4_Box_t *p_box )
{
uint16_t i16;
- MP4_READBOX_ENTER( MP4_Box_data_0xa9xxx_t );
+ MP4_READBOX_ENTER( MP4_Box_data_string_t );
- p_box->data.p_0xa9xxx->psz_text = NULL;
+ p_box->data.p_string->psz_text = NULL;
MP4_GET2BYTES( i16 );
MP4_GET2BYTES( i16 );
if( i_length >= i_read ) i_length = i_read + 1;
- p_box->data.p_0xa9xxx->psz_text = malloc( i_length );
- if( p_box->data.p_0xa9xxx->psz_text == NULL )
+ p_box->data.p_string->psz_text = malloc( i_length );
+ if( p_box->data.p_string->psz_text == NULL )
MP4_READBOX_EXIT( 0 );
i_length--;
- memcpy( p_box->data.p_0xa9xxx->psz_text,
+ memcpy( p_box->data.p_string->psz_text,
p_peek, i_length );
- p_box->data.p_0xa9xxx->psz_text[i_length] = '\0';
+ p_box->data.p_string->psz_text[i_length] = '\0';
#ifdef MP4_VERBOSE
msg_Dbg( p_stream,
"read box: \"c%3.3s\" text=`%s'",
((char*)&p_box->i_type + 1),
- p_box->data.p_0xa9xxx->psz_text );
+ p_box->data.p_string->psz_text );
#endif
}
else
{
// the rest is the text
i_data_len -= 12;
- p_box->data.p_0xa9xxx->psz_text = malloc( i_data_len + 1 );
- if( p_box->data.p_0xa9xxx->psz_text == NULL )
+ p_box->data.p_string->psz_text = malloc( i_data_len + 1 );
+ if( p_box->data.p_string->psz_text == NULL )
MP4_READBOX_EXIT( 0 );
- memcpy( p_box->data.p_0xa9xxx->psz_text,
+ memcpy( p_box->data.p_string->psz_text,
p_peek, i_data_len );
- p_box->data.p_0xa9xxx->psz_text[i_data_len] = '\0';
+ p_box->data.p_string->psz_text[i_data_len] = '\0';
#ifdef MP4_VERBOSE
msg_Dbg( p_stream,
"read box: \"c%3.3s\" text=`%s'",
((char*)&p_box->i_type+1),
- p_box->data.p_0xa9xxx->psz_text );
+ p_box->data.p_string->psz_text );
#endif
}
else
}
static void MP4_FreeBox_0xa9xxx( MP4_Box_t *p_box )
{
- FREENULL( p_box->data.p_0xa9xxx->psz_text );
+ FREENULL( p_box->data.p_string->psz_text );
}
/* Chapter support */
{ ATOM_chpl, MP4_ReadBox_chpl, MP4_FreeBox_chpl, ATOM_udta },
{ ATOM_covr, MP4_ReadBoxContainer, MP4_FreeBox_Common, ATOM_udta },
{ ATOM_gnre, MP4_ReadBox_gnre, MP4_FreeBox_Common, ATOM_udta },
- { ATOM_name, MP4_ReadBox_name, MP4_FreeBox_name, ATOM_udta },
+ { ATOM_name, MP4_ReadBox_String, MP4_FreeBox_String, ATOM_udta },
{ ATOM_trkn, MP4_ReadBox_trkn, MP4_FreeBox_Common, ATOM_udta },
/* iTunes/Quicktime meta info */
case DEMUX_GET_META:
{
vlc_meta_t *p_meta = (vlc_meta_t *)va_arg( args, vlc_meta_t*);
- MP4_Box_t *p_0xa9xxx;
+ MP4_Box_t *p_string;
MP4_Box_t *p_covr = MP4_BoxGet( p_sys->p_root, "/moov/udta/meta/ilst/covr/data[0]" );
if ( p_covr )
return VLC_SUCCESS;
}
- for( p_0xa9xxx = p_udta->p_first; p_0xa9xxx != NULL;
- p_0xa9xxx = p_0xa9xxx->p_next )
+ for( p_string = p_udta->p_first; p_string != NULL;
+ p_string = p_string->p_next )
{
- if( !p_0xa9xxx || !BOXDATA(p_0xa9xxx) )
+ if( !p_string || !BOXDATA(p_string) )
continue;
/* FIXME FIXME: should convert from whatever the character
* encoding of MP4 meta data is to UTF-8. */
-#define SET(fct) do { char *psz_utf = strdup( BOXDATA(p_0xa9xxx)->psz_text ? BOXDATA(p_0xa9xxx)->psz_text : "" ); \
+#define SET(fct) do { char *psz_utf = strdup( BOXDATA(p_string)->psz_text ? BOXDATA(p_string)->psz_text : "" ); \
if( psz_utf ) { EnsureUTF8( psz_utf ); \
fct( p_meta, psz_utf ); free( psz_utf ); } } while(0)
/* XXX Becarefull p_udta can have box that are not 0xa9xx */
- switch( p_0xa9xxx->i_type )
+ switch( p_string->i_type )
{
case ATOM_0xa9nam: /* Full name */
SET( vlc_meta_SetTitle );
break;
case ATOM_gnre:
- if( p_0xa9xxx->data.p_gnre->i_genre <= NUM_GENRES )
- vlc_meta_SetGenre( p_meta, ppsz_genres[p_0xa9xxx->data.p_gnre->i_genre - 1] );
+ if( p_string->data.p_gnre->i_genre <= NUM_GENRES )
+ vlc_meta_SetGenre( p_meta, ppsz_genres[p_string->data.p_gnre->i_genre - 1] );
break;
case ATOM_0xa9alb: /* Album */
{
char psz_trck[11];
snprintf( psz_trck, sizeof( psz_trck ), "%i",
- p_0xa9xxx->data.p_trkn->i_track_number );
+ p_string->data.p_trkn->i_track_number );
vlc_meta_SetTrackNum( p_meta, psz_trck );
- if( p_0xa9xxx->data.p_trkn->i_track_total > 0 )
+ if( p_string->data.p_trkn->i_track_total > 0 )
{
snprintf( psz_trck, sizeof( psz_trck ), "%i",
- p_0xa9xxx->data.p_trkn->i_track_total );
+ p_string->data.p_trkn->i_track_total );
vlc_meta_Set( p_meta, vlc_meta_TrackTotal, psz_trck );
}
break;
};
for( unsigned i = 0; xa9typetoextrameta[i].xa9_type; i++ )
{
- if( p_0xa9xxx->i_type == xa9typetoextrameta[i].xa9_type )
+ if( p_string->i_type == xa9typetoextrameta[i].xa9_type )
{
- char *psz_utf = strdup( BOXDATA(p_0xa9xxx)->psz_text ? BOXDATA(p_0xa9xxx)->psz_text : "" );
+ char *psz_utf = strdup( BOXDATA(p_string)->psz_text ? BOXDATA(p_string)->psz_text : "" );
if( psz_utf )
{
EnsureUTF8( psz_utf );
switch( p_box_iter->i_type )
{
case ATOM_0xa9nam:
- p_track->fmt.psz_description =
- strdup( p_box_iter->data.p_0xa9xxx->psz_text );
- break;
case ATOM_name:
p_track->fmt.psz_description =
- strdup( p_box_iter->data.p_name->psz_text );
+ strdup( p_box_iter->data.p_string->psz_text );
+ default:
break;
}
}