kopia lustrzana https://github.com/F5OEO/tstools
More work on replacing printing functions.
--HG-- extra : convert_revision : svn%3Aeff31bef-be4a-0410-a8fe-e47997df2690/trunk%40131issue20
rodzic
ef5a9ea9f9
commit
2f704d0c42
37
adts.c
37
adts.c
|
@ -32,6 +32,7 @@
|
|||
#include <string.h>
|
||||
|
||||
#include "compat.h"
|
||||
#include "printing_fns.h"
|
||||
#include "misc_fns.h"
|
||||
#include "adts_fns.h"
|
||||
|
||||
|
@ -66,7 +67,7 @@ extern int read_next_adts_frame(int file,
|
|||
|
||||
offset_t posn = tell_file(file);
|
||||
#if DEBUG
|
||||
printf("Offset: " OFFSET_T_FORMAT "\n",posn);
|
||||
fprint_msg("Offset: " OFFSET_T_FORMAT "\n",posn);
|
||||
#endif
|
||||
|
||||
err = read_bytes(file,JUST_ENOUGH,header);
|
||||
|
@ -74,37 +75,37 @@ extern int read_next_adts_frame(int file,
|
|||
return EOF;
|
||||
else if (err)
|
||||
{
|
||||
fprintf(stderr,"### Error reading header bytes of ADTS frame\n");
|
||||
fprintf(stderr," (in frame starting at " OFFSET_T_FORMAT ")\n",posn);
|
||||
fprint_err("### Error reading header bytes of ADTS frame\n"
|
||||
" (in frame starting at " OFFSET_T_FORMAT ")\n",posn);
|
||||
free(data);
|
||||
return 1;
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
printf("ADTS frame\n");
|
||||
print_msg("ADTS frame\n");
|
||||
print_data(stdout,"Start",header,JUST_ENOUGH,JUST_ENOUGH);
|
||||
#endif
|
||||
|
||||
if (header[0] != 0xFF || (header[1] & 0xF0) != 0xF0)
|
||||
{
|
||||
fprintf(stderr,"### ADTS frame does not start with '1111 1111 1111'"
|
||||
" syncword - lost synchronisation?\n"
|
||||
" Found 0x%X%X%X instead of 0xFFF\n",
|
||||
(unsigned)(header[0] & 0xF0) >> 4,
|
||||
(header[0] & 0x0F),
|
||||
(unsigned)(header[1] & 0xF0) >> 4);
|
||||
fprintf(stderr," (in frame starting at " OFFSET_T_FORMAT ")\n",posn);
|
||||
fprint_err("### ADTS frame does not start with '1111 1111 1111'"
|
||||
" syncword - lost synchronisation?\n"
|
||||
" Found 0x%X%X%X instead of 0xFFF\n",
|
||||
(unsigned)(header[0] & 0xF0) >> 4,
|
||||
(header[0] & 0x0F),
|
||||
(unsigned)(header[1] & 0xF0) >> 4);
|
||||
fprint_err(" (in frame starting at " OFFSET_T_FORMAT ")\n",posn);
|
||||
return 1;
|
||||
}
|
||||
|
||||
id = (header[1] & 0x08) >> 3;
|
||||
#if DEBUG
|
||||
printf(" ID %d (%s)\n",id,(id==1?"MPEG-2 AAC":"MPEG-4"));
|
||||
fprint_msg(" ID %d (%s)\n",id,(id==1?"MPEG-2 AAC":"MPEG-4"));
|
||||
#endif
|
||||
layer = (header[1] & 0x06) >> 1;
|
||||
if (layer != 0)
|
||||
printf(" layer is %d, not 0 (in frame at " OFFSET_T_FORMAT ")\n",
|
||||
layer,posn);
|
||||
fprint_msg(" layer is %d, not 0 (in frame at " OFFSET_T_FORMAT ")\n",
|
||||
layer,posn);
|
||||
|
||||
// Experience appears to show that emphasis doesn't exist in MPEG-2 AVC.
|
||||
// But it does exist in (ID=1) MPEG-4 streams.
|
||||
|
@ -124,13 +125,13 @@ extern int read_next_adts_frame(int file,
|
|||
frame_length = (header[4] << 5) | ((unsigned)(header[5] & 0xF8) >> 3);
|
||||
}
|
||||
#if DEBUG
|
||||
printf(" length %d\n",frame_length);
|
||||
fprint_msg(" length %d\n",frame_length);
|
||||
#endif
|
||||
|
||||
data = malloc(frame_length);
|
||||
if (data == NULL)
|
||||
{
|
||||
fprintf(stderr,"### Unable to extend data buffer for ADTS frame\n");
|
||||
print_err("### Unable to extend data buffer for ADTS frame\n");
|
||||
free(data);
|
||||
return 1;
|
||||
}
|
||||
|
@ -142,9 +143,9 @@ extern int read_next_adts_frame(int file,
|
|||
if (err)
|
||||
{
|
||||
if (err == EOF)
|
||||
fprintf(stderr,"### Unexpected EOF reading rest of ADTS frame\n");
|
||||
print_err("### Unexpected EOF reading rest of ADTS frame\n");
|
||||
else
|
||||
fprintf(stderr,"### Error reading rest of ADTS frame\n");
|
||||
print_err("### Error reading rest of ADTS frame\n");
|
||||
free(data);
|
||||
return 1;
|
||||
}
|
||||
|
|
7
audio.c
7
audio.c
|
@ -32,6 +32,7 @@
|
|||
#include <string.h>
|
||||
|
||||
#include "compat.h"
|
||||
#include "printing_fns.h"
|
||||
#include "audio_fns.h"
|
||||
#include "adts_fns.h"
|
||||
#include "l2audio_fns.h"
|
||||
|
@ -47,7 +48,7 @@ extern int build_audio_frame(audio_frame_p *frame)
|
|||
audio_frame_p new = malloc(SIZEOF_AUDIO_FRAME);
|
||||
if (new == NULL)
|
||||
{
|
||||
fprintf(stderr,"### Unable to allocate audio frame datastructure\n");
|
||||
fprint_err("### Unable to allocate audio frame datastructure\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -110,8 +111,8 @@ extern int read_next_audio_frame(int file,
|
|||
case AUDIO_AC3:
|
||||
return read_next_ac3_frame(file, frame);
|
||||
default:
|
||||
fprintf(stderr,"### Unrecognised audio type %d - cannot get next audio frame\n",
|
||||
audio_type);
|
||||
fprint_err("### Unrecognised audio type %d - cannot get next audio frame\n",
|
||||
audio_type);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
|
189
avs.c
189
avs.c
|
@ -38,6 +38,7 @@
|
|||
#include <string.h>
|
||||
|
||||
#include "compat.h"
|
||||
#include "printing_fns.h"
|
||||
#include "avs_fns.h"
|
||||
#include "es_fns.h"
|
||||
#include "ts_fns.h"
|
||||
|
@ -69,21 +70,6 @@ extern const char *avs_start_code_str(byte start_code)
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Print out information derived from the start code, to the given stream.
|
||||
*/
|
||||
extern void print_avs_start_code_str(FILE *stream,
|
||||
byte start_code)
|
||||
{
|
||||
if (stream != NULL)
|
||||
{
|
||||
if (start_code < 0xB0)
|
||||
fprintf(stream,"Slice %02x\n",start_code & 0xAF);
|
||||
else
|
||||
fprintf(stream,"%s",avs_start_code_str(start_code));
|
||||
}
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------
|
||||
// AVS item *data* stuff
|
||||
// ------------------------------------------------------------
|
||||
|
@ -102,7 +88,7 @@ extern int build_avs_context(ES_p es,
|
|||
avs_context_p new = malloc(SIZEOF_AVS_CONTEXT);
|
||||
if (new == NULL)
|
||||
{
|
||||
fprintf(stderr,"### Unable to allocate AVS context datastructure\n");
|
||||
print_err("### Unable to allocate AVS context datastructure\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -214,15 +200,15 @@ extern int avs_picture_coding_type(ES_unit_p unit)
|
|||
return picture_coding_type;
|
||||
else
|
||||
{
|
||||
fprintf(stderr,"AVS Picture coding type %d (in %02x)\n",
|
||||
picture_coding_type,unit->data[3]);
|
||||
fprint_err("AVS Picture coding type %d (in %02x)\n",
|
||||
picture_coding_type,unit->data[3]);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,"AVS 'frame' with start code %02x does not have picture coding type\n",
|
||||
unit->data[0]);
|
||||
fprint_err("AVS 'frame' with start code %02x does not have picture coding type\n",
|
||||
unit->data[0]);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
@ -242,14 +228,14 @@ static int build_avs_frame(avs_context_p context,
|
|||
avs_frame_p new = malloc(SIZEOF_AVS_FRAME);
|
||||
if (new == NULL)
|
||||
{
|
||||
fprintf(stderr,"### Unable to allocate AVS frame datastructure\n");
|
||||
print_err("### Unable to allocate AVS frame datastructure\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
err = build_ES_unit_list(&(new->list));
|
||||
if (err)
|
||||
{
|
||||
fprintf(stderr,"### Unable to allocate internal list for AVS frame\n");
|
||||
print_err("### Unable to allocate internal list for AVS frame\n");
|
||||
free(new);
|
||||
return 1;
|
||||
}
|
||||
|
@ -276,8 +262,8 @@ static int build_avs_frame(avs_context_p context,
|
|||
new->aspect_ratio = (data[10] & 0x3C) >> 2;
|
||||
new->frame_rate_code = ((data[10] & 0x03) << 2) | ((data[11] & 0xC0) >> 4);
|
||||
#if DEBUG
|
||||
printf("aspect_ratio=%d, frame_rate_code=%d (%.2f)\n",new->aspect_ratio,
|
||||
new->frame_rate_code,avs_frame_rate(new->frame_rate_code));
|
||||
fprint_msg("aspect_ratio=%d, frame_rate_code=%d (%.2f)\n",new->aspect_ratio,
|
||||
new->frame_rate_code,avs_frame_rate(new->frame_rate_code));
|
||||
#endif
|
||||
}
|
||||
else if (is_avs_seq_end_item(unit))
|
||||
|
@ -288,9 +274,8 @@ static int build_avs_frame(avs_context_p context,
|
|||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,
|
||||
"!!! Building AVS frame that starts with a %s (%02x)\n",
|
||||
avs_start_code_str(unit->start_code),unit->start_code);
|
||||
fprint_err("!!! Building AVS frame that starts with a %s (%02x)\n",
|
||||
avs_start_code_str(unit->start_code),unit->start_code);
|
||||
new->is_frame = FALSE;
|
||||
new->is_sequence_header = FALSE;
|
||||
new->picture_coding_type = 0xFF; // Meaningless value, just in case
|
||||
|
@ -299,8 +284,8 @@ static int build_avs_frame(avs_context_p context,
|
|||
err = append_to_avs_frame(new,unit);
|
||||
if (err)
|
||||
{
|
||||
fprintf(stderr,"### Error appending first ES unit to AVS %s\n",
|
||||
avs_start_code_str(unit->start_code));
|
||||
fprint_err("### Error appending first ES unit to AVS %s\n",
|
||||
avs_start_code_str(unit->start_code));
|
||||
free_avs_frame(&new);
|
||||
return 1;
|
||||
}
|
||||
|
@ -331,94 +316,23 @@ extern void free_avs_frame(avs_frame_p *frame)
|
|||
return;
|
||||
}
|
||||
|
||||
#if 0
|
||||
/*
|
||||
* Remember a frame for future reversing, if it's an I frame or a
|
||||
* sequence header
|
||||
*
|
||||
* Returns 0 if it succeeds, 1 if some error occurs.
|
||||
*/
|
||||
static int maybe_remember_this_frame(avs_context_p avs,
|
||||
int verbose,
|
||||
avs_frame_p this_frame)
|
||||
{
|
||||
int err;
|
||||
ES_offset start_posn = {0,0};
|
||||
uint32_t num_bytes = 0;
|
||||
if (this_frame->is_frame)
|
||||
{
|
||||
if (this_frame->picture_coding_type == AVS_I_PICTURE_CODING)
|
||||
{
|
||||
// It's an I frame - we want to remember it in our reverse list
|
||||
(avs->count_since_seq_hdr) ++;
|
||||
|
||||
err = get_ES_unit_list_bounds(this_frame->list,&start_posn,&num_bytes);
|
||||
if (err)
|
||||
{
|
||||
fprintf(stderr,
|
||||
"### Error working out position/size of AVS frame\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
err = remember_reverse_avs_data(avs->reverse_data,avs->frame_index,
|
||||
start_posn,num_bytes,
|
||||
avs->count_since_seq_hdr,0);
|
||||
if (err)
|
||||
{
|
||||
fprintf(stderr,
|
||||
"### Error remembering reversing data for AVS item\n");
|
||||
return 1;
|
||||
}
|
||||
if (verbose)
|
||||
printf("REMEMBER I frame %5d at " OFFSET_T_FORMAT_08
|
||||
"/%04d for %5d\n",avs->frame_index,
|
||||
start_posn.infile,start_posn.inpacket,num_bytes);
|
||||
}
|
||||
}
|
||||
else if (this_frame->is_sequence_header)
|
||||
{
|
||||
// It's a sequence header - remember it for the next frame
|
||||
avs->count_since_seq_hdr = 0;
|
||||
err = get_ES_unit_list_bounds(this_frame->list,&start_posn,&num_bytes);
|
||||
if (err)
|
||||
{
|
||||
fprintf(stderr,"### Error working out position/size of AVS"
|
||||
" sequence header for reversing data\n");
|
||||
return 1;
|
||||
}
|
||||
err = remember_reverse_avs_data(avs->reverse_data,0,
|
||||
start_posn,num_bytes,0);
|
||||
if (err)
|
||||
{
|
||||
fprintf(stderr,"### Error remembering reversing data for AVS item\n");
|
||||
return 1;
|
||||
}
|
||||
if (verbose)
|
||||
printf("REMEMBER Sequence header at " OFFSET_T_FORMAT_08
|
||||
"/%04d for %5d\n",
|
||||
start_posn.infile,start_posn.inpacket,num_bytes);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if DEBUG_GET_NEXT_PICTURE
|
||||
/*
|
||||
* Print a representation of an item for debugging
|
||||
*/
|
||||
static void _show_item(ES_unit_p unit)
|
||||
{
|
||||
printf("__ ");
|
||||
print_msg("__ ");
|
||||
if (unit == NULL)
|
||||
{
|
||||
printf("<no ES unit>\n");
|
||||
print_msg("<no ES unit>\n");
|
||||
return;
|
||||
}
|
||||
if (is_avs_frame_item(unit))
|
||||
printf("%s frame",AVS_PICTURE_CODING_STR(avs_picture_coding_type(unit)));
|
||||
fprint_msg("%s frame",AVS_PICTURE_CODING_STR(avs_picture_coding_type(unit)));
|
||||
else
|
||||
printf("%s",avs_start_code_str(unit->start_code));
|
||||
printf(" at " OFFSET_T_FORMAT "/%d for %d\n",
|
||||
fprint_msg("%s",avs_start_code_str(unit->start_code));
|
||||
fprint_msg(" at " OFFSET_T_FORMAT "/%d for %d\n",
|
||||
unit->start_posn.infile,unit->start_posn.inpacket,unit->data_len);
|
||||
}
|
||||
#endif
|
||||
|
@ -458,7 +372,7 @@ static int get_next_avs_single_frame(avs_context_p context,
|
|||
int num_slices = 0;
|
||||
int had_slice = FALSE;
|
||||
int last_slice_start_code = 0;
|
||||
if (verbose && context->last_item) printf("__ reuse last item\n");
|
||||
if (verbose && context->last_item) print_msg("__ reuse last item\n");
|
||||
#endif
|
||||
|
||||
context->last_item = NULL;
|
||||
|
@ -496,7 +410,7 @@ static int get_next_avs_single_frame(avs_context_p context,
|
|||
#if DEBUG_GET_NEXT_PICTURE
|
||||
if (verbose)
|
||||
{
|
||||
printf("__ --------------------------------- <start frame>\n");
|
||||
print_msg("__ --------------------------------- <start frame>\n");
|
||||
_show_item(item);
|
||||
}
|
||||
#endif
|
||||
|
@ -511,7 +425,7 @@ static int get_next_avs_single_frame(avs_context_p context,
|
|||
// A sequence end is a single item, so we're done
|
||||
#if DEBUG_GET_NEXT_PICTURE
|
||||
if (verbose)
|
||||
printf("__ --------------------------------- <end frame>\n");
|
||||
print_msg("__ --------------------------------- <end frame>\n");
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
@ -566,7 +480,7 @@ static int get_next_avs_single_frame(avs_context_p context,
|
|||
err = append_to_avs_frame(*frame,item);
|
||||
if (err)
|
||||
{
|
||||
fprintf(stderr,"### Error adding item to AVS sequence header\n");
|
||||
print_err("### Error adding item to AVS sequence header\n");
|
||||
free_avs_frame(frame);
|
||||
return 1;
|
||||
}
|
||||
|
@ -585,15 +499,15 @@ static int get_next_avs_single_frame(avs_context_p context,
|
|||
if (num_slices > 1)
|
||||
{
|
||||
ES_unit_p unit = &(*frame)->list->array[(*frame)->list->length-1];
|
||||
printf("__ ...\n");
|
||||
printf("__ slice %2x",last_slice_start_code);
|
||||
printf(" at " OFFSET_T_FORMAT "/%d for %d\n",
|
||||
unit->start_posn.infile,unit->start_posn.inpacket,
|
||||
unit->data_len);
|
||||
print_msg("__ ...\n");
|
||||
fprint_msg("__ slice %2x",last_slice_start_code);
|
||||
fprint_msg(" at " OFFSET_T_FORMAT "/%d for %d\n",
|
||||
unit->start_posn.infile,unit->start_posn.inpacket,
|
||||
unit->data_len);
|
||||
}
|
||||
printf("__ (%2d slices)\n",num_slices);
|
||||
fprint_msg("__ (%2d slices)\n",num_slices);
|
||||
}
|
||||
printf("__ --------------------------------- <end frame>\n");
|
||||
print_msg("__ --------------------------------- <end frame>\n");
|
||||
if (in_frame || in_sequence_header)
|
||||
_show_item(item);
|
||||
}
|
||||
|
@ -682,7 +596,7 @@ extern int write_avs_frame_as_TS(TS_writer_p tswriter,
|
|||
DEFAULT_VIDEO_STREAM_ID);
|
||||
if (err)
|
||||
{
|
||||
fprintf(stderr,"### Error writing out frame list to TS\n");
|
||||
print_err("### Error writing out frame list to TS\n");
|
||||
return err;
|
||||
}
|
||||
}
|
||||
|
@ -742,7 +656,7 @@ extern int write_avs_frame_as_TS_with_pts_dts(avs_frame_p frame,
|
|||
video_pid,DEFAULT_VIDEO_STREAM_ID);
|
||||
if (err)
|
||||
{
|
||||
fprintf(stderr,"### Error writing out frame list to TS\n");
|
||||
print_err("### Error writing out frame list to TS\n");
|
||||
return err;
|
||||
}
|
||||
}
|
||||
|
@ -793,7 +707,7 @@ extern int write_avs_frame_as_TS_with_PCR(avs_frame_p frame,
|
|||
video_pid,DEFAULT_VIDEO_STREAM_ID);
|
||||
if (err)
|
||||
{
|
||||
fprintf(stderr,"### Error writing out frame list to TS\n");
|
||||
print_err("### Error writing out frame list to TS\n");
|
||||
return err;
|
||||
}
|
||||
}
|
||||
|
@ -826,7 +740,7 @@ extern int write_avs_frame_as_ES(FILE *output,
|
|||
err = write_ES_unit(output,unit);
|
||||
if (err)
|
||||
{
|
||||
fprintf(stderr,"### Error writing out frame list to ES\n");
|
||||
print_err("### Error writing out frame list to ES\n");
|
||||
return err;
|
||||
}
|
||||
}
|
||||
|
@ -840,36 +754,35 @@ extern int write_avs_frame_as_ES(FILE *output,
|
|||
* - `frame` is the frame to report on
|
||||
* - if `report_data`, then the component ES units will be printed out as well
|
||||
*/
|
||||
extern void report_avs_frame(FILE *stream,
|
||||
avs_frame_p frame,
|
||||
extern void report_avs_frame(avs_frame_p frame,
|
||||
int report_data)
|
||||
{
|
||||
if (frame->is_frame)
|
||||
{
|
||||
printf("%s #%02d",
|
||||
AVS_PICTURE_CODING_STR(frame->picture_coding_type),
|
||||
frame->picture_distance);
|
||||
printf("\n");
|
||||
fprint_msg("%s #%02d",
|
||||
AVS_PICTURE_CODING_STR(frame->picture_coding_type),
|
||||
frame->picture_distance);
|
||||
print_msg("\n");
|
||||
}
|
||||
else if (frame->is_sequence_header)
|
||||
{
|
||||
printf("Sequence header: ");
|
||||
printf(" frame rate %d (%.2f), aspect ratio %d (%s)",
|
||||
frame->frame_rate_code,
|
||||
avs_frame_rate(frame->frame_rate_code),
|
||||
frame->aspect_ratio,
|
||||
(frame->aspect_ratio==1?"SAR: 1.0":
|
||||
frame->aspect_ratio==2?"4/3":
|
||||
frame->aspect_ratio==3?"16/9":
|
||||
frame->aspect_ratio==4?"2.21/1":"???"));
|
||||
printf("\n");
|
||||
print_msg("Sequence header: ");
|
||||
fprint_msg(" frame rate %d (%.2f), aspect ratio %d (%s)",
|
||||
frame->frame_rate_code,
|
||||
avs_frame_rate(frame->frame_rate_code),
|
||||
frame->aspect_ratio,
|
||||
(frame->aspect_ratio==1?"SAR: 1.0":
|
||||
frame->aspect_ratio==2?"4/3":
|
||||
frame->aspect_ratio==3?"16/9":
|
||||
frame->aspect_ratio==4?"2.21/1":"???"));
|
||||
print_msg("\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("Sequence end\n");
|
||||
print_msg("Sequence end\n");
|
||||
}
|
||||
if (report_data)
|
||||
report_ES_unit_list(stream,"ES units",frame->list);
|
||||
report_ES_unit_list("ES units",frame->list);
|
||||
}
|
||||
|
||||
// Local Variables:
|
||||
|
|
|
@ -35,11 +35,6 @@
|
|||
* Return a string representing the start code
|
||||
*/
|
||||
extern const char *avs_start_code_str(byte start_code);
|
||||
/*
|
||||
* Print out information derived from the start code, to the given stream.
|
||||
*/
|
||||
extern void print_avs_start_code_str(FILE *stream,
|
||||
byte start_code);
|
||||
/*
|
||||
* Determine the picture coding type of an AVS ES unit
|
||||
*
|
||||
|
@ -185,12 +180,10 @@ extern int write_avs_frame_as_ES(FILE *output,
|
|||
/*
|
||||
* Report on an AVS frame's contents.
|
||||
*
|
||||
* - `stream` is where to write the information
|
||||
* - `frame` is the frame to report on
|
||||
* - if `report_data`, then the component ES units will be printed out as well
|
||||
*/
|
||||
extern void report_avs_frame(FILE *stream,
|
||||
avs_frame_p frame,
|
||||
extern void report_avs_frame(avs_frame_p frame,
|
||||
int report_data);
|
||||
|
||||
#endif // _avs_fns
|
||||
|
|
17
es.c
17
es.c
|
@ -37,6 +37,7 @@
|
|||
#endif // _WIN32
|
||||
|
||||
#include "compat.h"
|
||||
#include "printing_fns.h"
|
||||
#include "misc_fns.h"
|
||||
#include "pes_fns.h"
|
||||
#include "tswrite_fns.h"
|
||||
|
@ -1229,26 +1230,24 @@ extern void free_ES_unit_list(ES_unit_list_p *list)
|
|||
/*
|
||||
* Report on an ES unit list's contents.
|
||||
*
|
||||
* - `stream` is where to write the information
|
||||
* - `name` is the name of the list (used in the header)
|
||||
* - `list` is the list to report on
|
||||
*/
|
||||
extern void report_ES_unit_list(FILE *stream,
|
||||
char *name,
|
||||
extern void report_ES_unit_list(char *name,
|
||||
ES_unit_list_p list)
|
||||
{
|
||||
fprintf(stream,"ES unit list '%s': ",name);
|
||||
fprint_msg("ES unit list '%s': ",name);
|
||||
if (list->array == NULL)
|
||||
fprintf(stream,"<empty>\n");
|
||||
print_msg("<empty>\n");
|
||||
else
|
||||
{
|
||||
int ii;
|
||||
fprintf(stream,"%d item%s (size %d)\n",list->length,
|
||||
(list->length==1?"":"s"),list->size);
|
||||
fprint_msg("%d item%s (size %d)\n",list->length,
|
||||
(list->length==1?"":"s"),list->size);
|
||||
for (ii=0; ii<list->length; ii++)
|
||||
{
|
||||
fprintf(stream," ");
|
||||
report_ES_unit(stream,&(list->array[ii]));
|
||||
print_msg(" ");
|
||||
report_ES_unit(stdout,&(list->array[ii]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
4
es_fns.h
4
es_fns.h
|
@ -335,12 +335,10 @@ extern void free_ES_unit_list(ES_unit_list_p *list);
|
|||
/*
|
||||
* Report on an ES unit list's contents.
|
||||
*
|
||||
* - `stream` is where to write the information
|
||||
* - `name` is the name of the list (used in the header)
|
||||
* - `list` is the list to report on
|
||||
*/
|
||||
extern void report_ES_unit_list(FILE *stream,
|
||||
char *name,
|
||||
extern void report_ES_unit_list(char *name,
|
||||
ES_unit_list_p list);
|
||||
|
||||
/*
|
||||
|
|
12
esreport.c
12
esreport.c
|
@ -116,9 +116,9 @@ static void report_avs_frames(ES_p es,
|
|||
count++;
|
||||
|
||||
if (!quiet)
|
||||
report_avs_frame(stdout,frame,FALSE);
|
||||
report_avs_frame(frame,FALSE);
|
||||
else if (verbose)
|
||||
report_avs_frame(stdout,frame,TRUE);
|
||||
report_avs_frame(frame,TRUE);
|
||||
|
||||
if (frame->is_frame)
|
||||
{
|
||||
|
@ -306,7 +306,7 @@ static void find_h262_fields(ES_p es,
|
|||
{
|
||||
if (picture->picture_structure < 3)
|
||||
{
|
||||
report_h262_picture(stdout,picture,verbose);
|
||||
report_h262_picture(picture,verbose);
|
||||
num_fields ++;
|
||||
}
|
||||
else
|
||||
|
@ -400,9 +400,9 @@ static void report_h262_frames(ES_p es,
|
|||
count++;
|
||||
|
||||
if (!quiet)
|
||||
report_h262_picture(stdout,picture,FALSE);
|
||||
report_h262_picture(picture,FALSE);
|
||||
else if (verbose)
|
||||
report_h262_picture(stdout,picture,TRUE);
|
||||
report_h262_picture(picture,TRUE);
|
||||
|
||||
if (picture->is_picture)
|
||||
{
|
||||
|
@ -554,7 +554,7 @@ static void report_h262_afds(ES_p es,
|
|||
double seconds = total_seconds - 60*minutes;
|
||||
printf("%dm %4.1fs (frame %d @ %.2fs): ",minutes,seconds,
|
||||
frames,total_seconds);
|
||||
report_h262_picture(stdout,picture,FALSE);
|
||||
report_h262_picture(picture,FALSE);
|
||||
afd = picture->afd;
|
||||
}
|
||||
|
||||
|
|
8
h262.c
8
h262.c
|
@ -32,6 +32,7 @@
|
|||
#include <string.h>
|
||||
|
||||
#include "compat.h"
|
||||
#include "printing_fns.h"
|
||||
#include "h262_fns.h"
|
||||
#include "es_fns.h"
|
||||
#include "ts_fns.h"
|
||||
|
@ -1147,8 +1148,7 @@ extern int write_h262_picture_as_ES(FILE *output,
|
|||
* - `picture` is the picture to report on
|
||||
* - if `report_data`, then the component ES units will be printed out as well
|
||||
*/
|
||||
extern void report_h262_picture(FILE *stream,
|
||||
h262_picture_p picture,
|
||||
extern void report_h262_picture(h262_picture_p picture,
|
||||
int report_data)
|
||||
{
|
||||
if (picture->is_picture)
|
||||
|
@ -1162,7 +1162,7 @@ extern void report_h262_picture(FILE *stream,
|
|||
printf(" (merged)");
|
||||
|
||||
printf(" %s",H262_ASPECT_RATIO_INFO_STR(picture->aspect_ratio_info));
|
||||
|
||||
|
||||
if (picture->is_real_afd)
|
||||
printf(" AFD ");
|
||||
else
|
||||
|
@ -1193,7 +1193,7 @@ extern void report_h262_picture(FILE *stream,
|
|||
printf("Sequence end\n");
|
||||
}
|
||||
if (report_data)
|
||||
report_ES_unit_list(stream,"ES units",picture->list);
|
||||
report_ES_unit_list("ES units",picture->list);
|
||||
}
|
||||
|
||||
// Local Variables:
|
||||
|
|
|
@ -224,12 +224,10 @@ extern int write_h262_picture_as_ES(FILE *output,
|
|||
/*
|
||||
* Report on an H.262 picture's contents.
|
||||
*
|
||||
* - `stream` is where to write the information
|
||||
* - `picture` is the picture to report on
|
||||
* - if `report_data`, then the component ES units will be printed out as well
|
||||
*/
|
||||
extern void report_h262_picture(FILE *stream,
|
||||
h262_picture_p picture,
|
||||
extern void report_h262_picture(h262_picture_p picture,
|
||||
int report_data);
|
||||
|
||||
#endif // _h262_fns
|
||||
|
|
Ładowanie…
Reference in New Issue