#include "libmpeg3.h"#include "mpeg3protos.h"#include <errno.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/stat.h>

Go to the source code of this file.
Defines | |
| #define | PUT_INT32(x) |
| #define | PUT_INT64(x) |
Functions | |
| static uint32_t | read_int32 (unsigned char *buffer, int *position) |
| static uint64_t | read_int64 (unsigned char *buffer, int *position) |
| static int | read_data (unsigned char *buffer, int *position, unsigned char *output, int bytes) |
| static void | complete_path (char *result, char *toc_path, char *path) |
| int | mpeg3_read_toc (mpeg3_t *file, int *atracks_return, int *vtracks_return) |
| mpeg3_t * | mpeg3_start_toc (char *path, char *toc_path, int64_t *total_bytes) |
| void | mpeg3_set_index_bytes (mpeg3_t *file, int64_t bytes) |
| static void | divide_index (mpeg3_t *file, int track_number) |
| int | mpeg3_update_index (mpeg3_t *file, int track_number, int flush) |
| static int | handle_audio (mpeg3_t *file, int track_number) |
| static int | handle_video (mpeg3_t *file, mpeg3_vtrack_t *vtrack) |
| static void | handle_subtitle (mpeg3_t *file) |
| int | mpeg3_do_toc (mpeg3_t *file, int64_t *bytes_processed) |
| void | mpeg3_stop_toc (mpeg3_t *file) |
| int | mpeg3_index_tracks (mpeg3_t *file) |
| int | mpeg3_index_channels (mpeg3_t *file, int track) |
| int | mpeg3_index_zoom (mpeg3_t *file) |
| int | mpeg3_index_size (mpeg3_t *file, int track) |
| float * | mpeg3_index_data (mpeg3_t *file, int track, int channel) |
| int | mpeg3_has_toc (mpeg3_t *file) |
| char * | mpeg3_title_path (mpeg3_t *file, int number) |
| int64_t | mpeg3_get_source_date (mpeg3_t *file) |
| int64_t | mpeg3_calculate_source_date (char *path) |
| #define PUT_INT32 | ( | x | ) |
Value:
{ \
uint32_t temp = x; \
if(MPEG3_LITTLE_ENDIAN) \
{ \
fputc(((unsigned char*)&temp)[3], file->toc_fd); \
fputc(((unsigned char*)&temp)[2], file->toc_fd); \
fputc(((unsigned char*)&temp)[1], file->toc_fd); \
fputc(((unsigned char*)&temp)[0], file->toc_fd); \
} \
else \
{ \
fwrite(&temp, 1, 4, file->toc_fd); \
} \
}
Definition at line 12 of file mpeg3tocutil.c.
Referenced by mpeg3_stop_toc().
| #define PUT_INT64 | ( | x | ) |
Value:
{ \
uint64_t temp = x; \
if(MPEG3_LITTLE_ENDIAN) \
{ \
fputc(((unsigned char*)&temp)[7], file->toc_fd); \
fputc(((unsigned char*)&temp)[6], file->toc_fd); \
fputc(((unsigned char*)&temp)[5], file->toc_fd); \
fputc(((unsigned char*)&temp)[4], file->toc_fd); \
fputc(((unsigned char*)&temp)[3], file->toc_fd); \
fputc(((unsigned char*)&temp)[2], file->toc_fd); \
fputc(((unsigned char*)&temp)[1], file->toc_fd); \
fputc(((unsigned char*)&temp)[0], file->toc_fd); \
} \
else \
{ \
fwrite(&temp, 1, 8, file->toc_fd); \
} \
}
Definition at line 31 of file mpeg3tocutil.c.
Referenced by mpeg3_stop_toc().
| static void complete_path | ( | char * | result, | |
| char * | toc_path, | |||
| char * | path | |||
| ) | [static] |
Definition at line 116 of file mpeg3tocutil.c.
References strrchr.
Referenced by get_ifo_playlist(), mpeg3_generate_toc(), and mpeg3_read_toc().
| static void divide_index | ( | mpeg3_t * | file, | |
| int | track_number | |||
| ) | [static] |
Definition at line 569 of file mpeg3tocutil.c.
References mpeg3_t::atrack, mpeg3_index_t::index_channels, mpeg3_index_t::index_data, mpeg3_index_t::index_size, mpeg3_index_t::index_zoom, mpeg3_t::indexes, MAX, MIN, min, and mpeg3_t::total_indexes.
Referenced by mpeg3_stop_toc(), and mpeg3_update_index().
| static int handle_audio | ( | mpeg3_t * | file, | |
| int | track_number | |||
| ) | [static] |
Definition at line 735 of file mpeg3tocutil.c.
References mpeg3_t::atrack, mpeg3_atrack_t::audio, mpeg3_demuxer_t::audio_buffer, mpeg3_atrack_t::audio_eof, mpeg3_demuxer_t::audio_size, mpeg3_demuxer_t::data_buffer, mpeg3_demuxer_t::data_size, mpeg3_atrack_t::demuxer, mpeg3_t::demuxer, MPEG3_AUDIO_HISTORY, mpeg3_update_index(), mpeg3audio_decode_audio(), mpeg3demux_append_data(), and mpeg3demux_tell_byte().
Referenced by mpeg3_do_toc().

| static void handle_subtitle | ( | mpeg3_t * | file | ) | [static] |
Definition at line 903 of file mpeg3tocutil.c.
References mpeg3_append_subtitle_offset(), mpeg3_get_strack(), mpeg3_get_subtitle(), mpeg3_pop_subtitle(), mpeg3_subtitle_tracks(), and mpeg3_subtitle_t::offset.

| static int handle_video | ( | mpeg3_t * | file, | |
| mpeg3_vtrack_t * | vtrack | |||
| ) | [static] |
Definition at line 789 of file mpeg3tocutil.c.
References BOTTOM_FIELD, mpeg3video_t::current_repeat, mpeg3_demuxer_t::data_buffer, mpeg3_demuxer_t::data_position, mpeg3_demuxer_t::data_size, mpeg3_vtrack_t::demuxer, mpeg3_t::demuxer, FRAME_PICTURE, I_TYPE, is_keyframe(), mpeg3_append_frame(), MPEG3_GOP_START_CODE, MPEG3_PICTURE_START_CODE, MPEG3_SEQUENCE_START_CODE, MPEG3_VIDEO_STREAM_SIZE, mpeg3demux_append_data(), mpeg3demux_shift_data(), mpeg3demux_tell_byte(), mpeg3video_get_header(), mpeg3video_t::pict_struct, mpeg3video_t::pict_type, mpeg3_vtrack_t::prev_frame_offset, mpeg3_vtrack_t::prev_offset, mpeg3video_t::repeat_count, mpeg3_vtrack_t::video, mpeg3_demuxer_t::video_buffer, mpeg3_vtrack_t::video_eof, and mpeg3_demuxer_t::video_size.
Referenced by mpeg3_do_toc().

| int64_t mpeg3_calculate_source_date | ( | char * | path | ) |
Definition at line 1416 of file mpeg3tocutil.c.
Referenced by mpeg3_read_toc(), and mpeg3_start_toc().
| int mpeg3_do_toc | ( | mpeg3_t * | file, | |
| int64_t * | bytes_processed | |||
| ) |
Definition at line 936 of file mpeg3tocutil.c.
References mpeg3_demuxer_t::astream_table, mpeg3_t::atrack, mpeg3_demuxer_t::custom_id, mpeg3_t::demuxer, mpeg3_demuxer_t::got_audio, mpeg3_demuxer_t::got_subtitle, mpeg3_demuxer_t::got_video, handle_audio(), handle_subtitle(), handle_video(), mpeg3_t::indexes, mpeg3_t::is_audio_stream, mpeg3_t::is_transport_stream, mpeg3_t::is_video_stream, mpeg3_append_frame(), mpeg3_append_samples(), mpeg3_new_atrack(), mpeg3_new_index(), mpeg3_new_vtrack(), mpeg3_read_next_packet(), mpeg3demux_tell_byte(), mpeg3demux_tell_program(), mpeg3_vtrack_t::pid, mpeg3_atrack_t::pid, mpeg3_vtrack_t::prev_offset, mpeg3_atrack_t::prev_offset, program, mpeg3_t::total_astreams, mpeg3_t::total_indexes, mpeg3_t::total_vstreams, mpeg3_demuxer_t::vstream_table, and mpeg3_t::vtrack.
Referenced by FileMPEG::create_index(), and main().

| int64_t mpeg3_get_source_date | ( | mpeg3_t * | file | ) |
| int mpeg3_has_toc | ( | mpeg3_t * | file | ) |
Definition at line 1396 of file mpeg3tocutil.c.
References mpeg3_t::frame_offsets, and mpeg3_t::sample_offsets.
Referenced by FileMPEG::create_index().
| int mpeg3_index_channels | ( | mpeg3_t * | file, | |
| int | track | |||
| ) |
Definition at line 1370 of file mpeg3tocutil.c.
References mpeg3_index_t::index_channels, mpeg3_t::indexes, and mpeg3_t::total_indexes.
Referenced by FileMPEG::get_index().
| float* mpeg3_index_data | ( | mpeg3_t * | file, | |
| int | track, | |||
| int | channel | |||
| ) |
Definition at line 1389 of file mpeg3tocutil.c.
References mpeg3_index_t::index_data, mpeg3_t::indexes, and mpeg3_t::total_indexes.
Referenced by FileMPEG::get_index().
| int mpeg3_index_size | ( | mpeg3_t * | file, | |
| int | track | |||
| ) |
Definition at line 1383 of file mpeg3tocutil.c.
References mpeg3_index_t::index_size, mpeg3_t::indexes, and mpeg3_t::total_indexes.
Referenced by FileMPEG::get_index().
| int mpeg3_index_tracks | ( | mpeg3_t * | file | ) |
Definition at line 1365 of file mpeg3tocutil.c.
References mpeg3_t::total_indexes.
Referenced by FileMPEG::get_index().
| int mpeg3_index_zoom | ( | mpeg3_t * | file | ) |
Definition at line 1376 of file mpeg3tocutil.c.
References mpeg3_index_t::index_zoom, mpeg3_t::indexes, and mpeg3_t::total_indexes.
Referenced by FileMPEG::get_index().
| int mpeg3_read_toc | ( | mpeg3_t * | file, | |
| int * | atracks_return, | |||
| int * | vtracks_return | |||
| ) |
Definition at line 134 of file mpeg3tocutil.c.
References mpeg3_strack_t::allocated_offsets, mpeg3_demuxer_t::astream_table, ATRACK_COUNT, mpeg3_t::audio_eof, mpeg3_title_t::cell_table, mpeg3_title_t::cell_table_allocation, mpeg3_title_t::cell_table_size, mpeg3_t::channel_counts, complete_path(), debug, mpeg3_t::demuxer, mpeg3_title_t::end_byte, fclose(), FILE_INFO, FILE_TYPE_AUDIO, FILE_TYPE_PROGRAM, FILE_TYPE_TRANSPORT, FILE_TYPE_VIDEO, fopen(), fprintf, mpeg3_t::frame_offsets, mpeg3_t::fs, mpeg3_t::have_palette, IFO_PALETTE, mpeg3_index_t::index_channels, mpeg3_index_t::index_data, mpeg3_index_t::index_size, mpeg3_index_t::index_zoom, mpeg3_t::indexes, mpeg3_t::is_audio_stream, mpeg3_t::is_bd, mpeg3_t::is_program_stream, mpeg3_t::is_transport_stream, mpeg3_t::is_video_stream, mpeg3_t::keyframe_numbers, memcpy, mpeg3_calculate_source_date(), MPEG3_INVALID_TOC_VERSION, mpeg3_new_index(), mpeg3_new_strack(), mpeg3_new_title(), MPEG3_STRLEN, MPEG3_TOC_DATE_MISMATCH, MPEG3_TOC_VERSION, mpeg3demux_open_title(), mpeg3io_read_data(), mpeg3io_seek(), mpeg3io_total_bytes, mpeg3_strack_t::offsets, mpeg3_t::palette, mpeg3_fs_t::path, mpeg3_cell_t::program, mpeg3_cell_t::program_end, mpeg3_cell_t::program_start, read_data(), read_int32(), read_int64(), RENDERFARM_FS_PREFIX, mpeg3_t::sample_offsets, mpeg3_t::source_date, mpeg3_title_t::start_byte, mpeg3_t::strack, STRACK_COUNT, STREAM_AUDIO, STREAM_VIDEO, strrchr, mpeg3_cell_t::title_end, TITLE_PATH, mpeg3_cell_t::title_start, mpeg3_demuxer_t::titles, mpeg3_title_t::total_bytes, mpeg3_t::total_frame_offsets, mpeg3_t::total_indexes, mpeg3_t::total_keyframe_numbers, mpeg3_strack_t::total_offsets, mpeg3_t::total_sample_offsets, mpeg3_t::total_samples, mpeg3_t::total_sstreams, mpeg3_demuxer_t::total_titles, mpeg3_t::video_eof, mpeg3_demuxer_t::vstream_table, and VTRACK_COUNT.
Referenced by mpeg3_get_file_type().

| void mpeg3_set_index_bytes | ( | mpeg3_t * | file, | |
| int64_t | bytes | |||
| ) |
| mpeg3_t* mpeg3_start_toc | ( | char * | path, | |
| char * | toc_path, | |||
| int64_t * | total_bytes | |||
| ) |
Definition at line 496 of file mpeg3tocutil.c.
References mpeg3_t::demuxer, mpeg3_title_t::end_byte, fopen(), mpeg3_title_t::fs, mpeg3_t::fs, mpeg3_calculate_source_date(), mpeg3_delete(), mpeg3_get_file_type(), mpeg3_new(), mpeg3_new_cell(), mpeg3_new_title(), mpeg3demux_movie_size(), mpeg3demux_open_title(), mpeg3demux_seek_byte(), mpeg3io_open_file(), mpeg3io_total_bytes, mpeg3_fs_t::path, mpeg3_demuxer_t::read_all, mpeg3_t::seekable, mpeg3_t::source_date, mpeg3_title_t::start_byte, mpeg3_demuxer_t::titles, mpeg3_t::toc_fd, mpeg3_title_t::total_bytes, and mpeg3_demuxer_t::total_titles.
Referenced by FileMPEG::create_index(), and main().

| void mpeg3_stop_toc | ( | mpeg3_t * | file | ) |
Definition at line 1094 of file mpeg3tocutil.c.
References mpeg3_demuxer_t::astream_table, mpeg3_t::atrack, ATRACK_COUNT, mpeg3_atrack_t::audio_eof, mpeg3_title_t::cell_table, mpeg3_title_t::cell_table_size, mpeg3_atrack_t::channels, mpeg3_atrack_t::current_position, mpeg3_t::demuxer, divide_index(), fclose(), FILE_INFO, FILE_TYPE_AUDIO, FILE_TYPE_PROGRAM, FILE_TYPE_TRANSPORT, FILE_TYPE_VIDEO, fprintf, fputc(), mpeg3_vtrack_t::frame_offsets, mpeg3_title_t::fs, mpeg3_t::fs, fwrite(), mpeg3_strack_t::id, IFO_PALETTE, mpeg3_index_t::index_data, mpeg3_index_t::index_size, mpeg3_index_t::index_zoom, mpeg3_t::indexes, mpeg3_t::is_audio_stream, mpeg3_t::is_program_stream, mpeg3_t::is_transport_stream, mpeg3_t::is_video_stream, mpeg3_vtrack_t::keyframe_numbers, mpeg3_append_samples(), mpeg3_delete(), MPEG3_MAX_STREAMS, MPEG3_STRLEN, MPEG3_TOC_VERSION, mpeg3_update_index(), mpeg3_strack_t::offsets, mpeg3_t::palette, mpeg3_fs_t::path, mpeg3_vtrack_t::pid, mpeg3_atrack_t::pid, mpeg3_atrack_t::prev_offset, mpeg3_cell_t::program, mpeg3_cell_t::program_end, mpeg3_cell_t::program_start, PUT_INT32, PUT_INT64, mpeg3_atrack_t::sample_offsets, mpeg3_t::source_date, mpeg3_t::strack, STRACK_COUNT, STREAM_AUDIO, STREAM_VIDEO, mpeg3_cell_t::title_end, TITLE_PATH, mpeg3_cell_t::title_start, mpeg3_demuxer_t::titles, mpeg3_t::toc_fd, mpeg3_t::total_astreams, mpeg3_title_t::total_bytes, mpeg3_vtrack_t::total_frame_offsets, mpeg3_vtrack_t::total_keyframe_numbers, mpeg3_strack_t::total_offsets, mpeg3_atrack_t::total_sample_offsets, mpeg3_t::total_sstreams, mpeg3_demuxer_t::total_titles, mpeg3_t::total_vstreams, mpeg3_vtrack_t::video_eof, mpeg3_demuxer_t::vstream_table, mpeg3_t::vtrack, and VTRACK_COUNT.
Referenced by FileMPEG::create_index(), and main().

| char* mpeg3_title_path | ( | mpeg3_t * | file, | |
| int | number | |||
| ) |
Definition at line 1402 of file mpeg3tocutil.c.
References mpeg3_t::demuxer, mpeg3_title_t::fs, mpeg3_fs_t::path, and mpeg3_demuxer_t::titles.
| int mpeg3_update_index | ( | mpeg3_t * | file, | |
| int | track_number, | |||
| int | flush | |||
| ) |
Definition at line 602 of file mpeg3tocutil.c.
References mpeg3_t::atrack, mpeg3_atrack_t::audio, mpeg3_atrack_t::channels, mpeg3_atrack_t::current_position, divide_index(), mpeg3_index_t::index_allocated, mpeg3_t::index_bytes, mpeg3_index_t::index_channels, mpeg3_index_t::index_data, mpeg3_index_t::index_size, mpeg3_index_t::index_zoom, mpeg3_t::indexes, min, mpeg3_append_samples(), MPEG3_AUDIO_CHUNKSIZE, mpeg3_shift_audio(), mpeg3audio_t::output, mpeg3audio_t::output_size, and mpeg3_atrack_t::prev_offset.
Referenced by handle_audio(), and mpeg3_stop_toc().

| static int read_data | ( | unsigned char * | buffer, | |
| int * | position, | |||
| unsigned char * | output, | |||
| int | bytes | |||
| ) | [static] |
| static uint32_t read_int32 | ( | unsigned char * | buffer, | |
| int * | position | |||
| ) | [static] |
Definition at line 52 of file mpeg3tocutil.c.
References MPEG3_LITTLE_ENDIAN.
Referenced by mpeg3_read_toc(), read_avi_markers(), and read_quicktime_markers().
| static uint64_t read_int64 | ( | unsigned char * | buffer, | |
| int * | position | |||
| ) | [static] |
Definition at line 75 of file mpeg3tocutil.c.
References MPEG3_LITTLE_ENDIAN.
Referenced by mpeg3_read_toc().
1.5.5