mpeg3_vtrack_t* mpeg3_new_vtrack(mpeg3_t *file, int stream_id, mpeg3_demuxer_t *demuxer)
{
	int result = 0;
	mpeg3_vtrack_t *new_vtrack;
	new_vtrack = (mpeg3_vtrack_t *) memoryAllocate(1, sizeof(mpeg3_vtrack_t));
	new_vtrack->demuxer = mpeg3_new_demuxer(file, 0, 1, stream_id);
	if(demuxer) mpeg3demux_copy_titles(new_vtrack->demuxer, demuxer);
	new_vtrack->current_position = 0;

/* Get information about the track here. */
	new_vtrack->video = mpeg3video_new(file, new_vtrack);
	if(!new_vtrack->video)
	{
/* Failed */
		mpeg3_delete_vtrack(file, new_vtrack);
		new_vtrack = 0;
	}
	return new_vtrack;
}
Esempio n. 2
0
mpeg3_atrack_t* mpeg3_new_atrack(mpeg3_t *file, int stream_id, int format, mpeg3_demuxer_t *demuxer)
{
	mpeg3_atrack_t *new_atrack;

	new_atrack = (mpeg3_atrack_t*)calloc(1, sizeof(mpeg3_atrack_t));
	new_atrack->channels = 0;
	new_atrack->sample_rate = 0;
	new_atrack->total_samples = 0;
	new_atrack->current_position = 0;
	new_atrack->demuxer = mpeg3_new_demuxer(file, 1, 0, stream_id);
	if(demuxer) mpeg3demux_copy_titles(new_atrack->demuxer, demuxer);
	new_atrack->audio = mpeg3audio_new(file, new_atrack, format);

	if(!new_atrack->audio)
	{
/* Failed */
		mpeg3_delete_atrack(file, new_atrack);
		new_atrack = 0;
	}
	return new_atrack;
}
int mpeg3_generate_toc_for_Squeak(mpeg3_t *file, int timecode_search, int print_streams, char *buffer, int bufferSize) {
	mpeg3_demuxer_t *demuxer;
	int i;
	char temp_buffer[256];
	if(file)
	{
		buffer[0] = 0x00;
		demuxer = mpeg3_new_demuxer(file, 0, 0, -1);
		mpeg3demux_create_title_for_Squeak(demuxer, timecode_search, buffer, bufferSize);
/* Just print the first title's streams */
		if(print_streams) mpeg3demux_print_streams_for_Squeak(demuxer, buffer,bufferSize);

		sprintf(temp_buffer, "SIZE: %ld\n", demuxer->titles[demuxer->current_title]->total_bytes);
		appendStringToBufferIfPossible(buffer,temp_buffer,bufferSize);		
		sprintf(temp_buffer, "PACKETSIZE: %ld\n", demuxer->packet_size);
		appendStringToBufferIfPossible(buffer,temp_buffer,bufferSize);		

		mpeg3demux_print_timecodes(demuxer->titles[demuxer->current_title], buffer);

		mpeg3_delete_demuxer(demuxer);
		return 0;
	}
	return 1;
}
Esempio n. 4
0
int mpeg3_generate_toc(FILE *output, char *path, int timecode_search, int print_streams)
{
	mpeg3_t *file = mpeg3_open(path);
	mpeg3_demuxer_t *demuxer;
	int i;

	if(file)
	{
		demuxer = mpeg3_new_demuxer(file, 0, 0, -1);
		if(file->is_ifo_file)
		{
			int i;
			mpeg3io_open_file(file->fs);
			mpeg3demux_read_ifo(file, demuxer, 1);
			mpeg3io_close_file(file->fs);

			for(i = 0; i < demuxer->total_titles; i++)
			{
				fprintf(output, "TOCVERSION %d\n", TOCVERSION);

				if(file->is_program_stream)
					fprintf(output, "PROGRAM_STREAM\n");
				else
				if(file->is_transport_stream)
					fprintf(output, "TRANSPORT_STREAM\n");

				fprintf(output, "PATH: %s\n"
					"SIZE: %ld\n"
					"PACKETSIZE: %ld\n",
					demuxer->titles[i]->fs->path,
					demuxer->titles[i]->total_bytes,
					file->packet_size);
				
/* Just print the first title's streams */
				if(i == 0)
					mpeg3demux_print_streams(demuxer, output);

				mpeg3demux_print_timecodes(demuxer->titles[i], output);
			}

			return 0;
		}
		else
		{
			char complete_path[MPEG3_STRLEN];
			mpeg3io_complete_path(complete_path, path);

			mpeg3demux_create_title(demuxer, timecode_search, output);

			fprintf(output, "TOCVERSION %d\n" 
				"PATH: %s\n", TOCVERSION, complete_path);

			if(file->is_program_stream)
				fprintf(output, "PROGRAM_STREAM\n");
			else
			if(file->is_transport_stream)
				fprintf(output, "TRANSPORT_STREAM\n");
			else
			if(file->is_video_stream)
				fprintf(output, "VIDEO_STREAM\n");
			else
			if(file->is_audio_stream)
				fprintf(output, "AUDIO_STREAM\n");

/* Just print the first title's streams */
			if(print_streams) mpeg3demux_print_streams(demuxer, output);

			if(file->is_transport_stream || file->is_program_stream)
			{
				fprintf(output, "SIZE: %ld\n", demuxer->titles[demuxer->current_title]->total_bytes);
				fprintf(output, "PACKETSIZE: %ld\n", file->packet_size);
			}

			mpeg3demux_print_timecodes(demuxer->titles[demuxer->current_title], output);
			return 0;
		}

		mpeg3_delete_demuxer(demuxer);
		mpeg3_close(file);
	}
	return 1;
}