* Preamble
*****************************************************************************/
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
#include <vlc/vlc.h>
asprintf( &psz_absolute, "%s://%s%s",
p_demux->psz_access, psz_path, psz_ref );
- if( psz_ref ) free( psz_ref );
+ free( psz_ref );
psz_ref = psz_absolute;
free( psz_path );
}
p_input = input_ItemNewExt( p_playlist, psz_ref, NULL,
0, NULL, -1 );
input_ItemCopyOptions( p_current->p_input, p_input );
+ /* FIXME: playlist_BothAddInput() can fail */
playlist_BothAddInput( p_playlist, p_input,
p_item_in_category,
PLAYLIST_APPEND, PLAYLIST_END,
msg_Err( p_demux, "unknown ref type=%4.4s FIXME (send a bug report)",
(char*)&p_rdrf->data.p_rdrf->i_ref_type );
}
- if( psz_ref ) free( psz_ref );
+ free( psz_ref );
}
if( b_play && p_item_in_category &&
p_item_in_category->i_children > 0 )
msg_Err( p_demux, "cannot find any /moov/trak" );
goto error;
}
- msg_Dbg( p_demux, "find %d track%c",
+ msg_Dbg( p_demux, "found %d track%c",
p_sys->i_tracks,
p_sys->i_tracks ? 's':' ' );
/* allocate memory */
p_sys->track = calloc( p_sys->i_tracks, sizeof( mp4_track_t ) );
+ if( p_sys->track == NULL )
+ goto error;
memset( p_sys->track, 0, p_sys->i_tracks * sizeof( mp4_track_t ) );
/* Search the first chap reference (like quicktime) */
SET( vlc_meta_SetAlbum );
break;
+ case FOURCC_0xa9trk: /* Track */
+ SET( vlc_meta_SetTracknum );
+ break;
+
+ case FOURCC_0xa9cmt: /* Commment */
+ SET( vlc_meta_SetDescription );
+ break;
+
+ case FOURCC_0xa9url: /* URL */
+ SET( vlc_meta_SetURL );
+ break;
+
+ case FOURCC_0xa9enc: /* Encoded By */
+ SET( vlc_meta_SetEncodedBy );
+ break;
+
case FOURCC_0xa9swr:
case FOURCC_0xa9inf: /* Information */
case FOURCC_0xa9dir: /* Director */
case FOURCC_0xa9dis: /* Disclaimer */
- case FOURCC_0xa9enc: /* Encoded By */
- case FOURCC_0xa9trk: /* Track */
- case FOURCC_0xa9cmt: /* Commment */
- case FOURCC_0xa9url: /* URL */
case FOURCC_0xa9req: /* Requirements */
case FOURCC_0xa9fmt: /* Original Format */
case FOURCC_0xa9dsa: /* Display Source As */
case DEMUX_SET_NEXT_DEMUX_TIME:
case DEMUX_SET_GROUP:
+ case DEMUX_HAS_UNSUPPORTED_META:
+ case DEMUX_GET_ATTACHMENTS:
return VLC_EGENERIC;
default:
}
p_demux_track->chunk = calloc( p_demux_track->i_chunk_count,
sizeof( mp4_chunk_t ) );
+ if( p_demux_track->chunk == NULL )
+ {
+ return VLC_ENOMEM;
+ }
/* first we read chunk offset */
for( i_chunk = 0; i_chunk < p_demux_track->i_chunk_count; i_chunk++ )
for( i_chunk = p_stsc->data.p_stsc->i_first_chunk[i_index] - 1;
i_chunk < i_last; i_chunk++ )
{
+ if( i_chunk >= p_demux_track->i_chunk_count )
+ {
+ msg_Warn( p_demux, "corrupted chunk table" );
+ return VLC_EGENERIC;
+ }
+
p_demux_track->chunk[i_chunk].i_sample_description_index =
p_stsc->data.p_stsc->i_sample_description_index[i_index];
p_demux_track->chunk[i_chunk].i_sample_count =
p_demux_track->i_sample_size = 0;
p_demux_track->p_sample_size =
calloc( p_demux_track->i_sample_count, sizeof( uint32_t ) );
+ if( p_demux_track->p_sample_size == NULL )
+ return VLC_ENOMEM;
for( i_sample = 0; i_sample < p_demux_track->i_sample_count; i_sample++ )
{