More work on replacing printing functions.

--HG--
extra : convert_revision : svn%3Aeff31bef-be4a-0410-a8fe-e47997df2690/trunk%40131
issue20
tibs 2009-02-23 21:05:51 +00:00
rodzic ef5a9ea9f9
commit 2f704d0c42
9 zmienionych plików z 95 dodań i 192 usunięć

37
adts.c
Wyświetl plik

@ -32,6 +32,7 @@
#include <string.h> #include <string.h>
#include "compat.h" #include "compat.h"
#include "printing_fns.h"
#include "misc_fns.h" #include "misc_fns.h"
#include "adts_fns.h" #include "adts_fns.h"
@ -66,7 +67,7 @@ extern int read_next_adts_frame(int file,
offset_t posn = tell_file(file); offset_t posn = tell_file(file);
#if DEBUG #if DEBUG
printf("Offset: " OFFSET_T_FORMAT "\n",posn); fprint_msg("Offset: " OFFSET_T_FORMAT "\n",posn);
#endif #endif
err = read_bytes(file,JUST_ENOUGH,header); err = read_bytes(file,JUST_ENOUGH,header);
@ -74,37 +75,37 @@ extern int read_next_adts_frame(int file,
return EOF; return EOF;
else if (err) else if (err)
{ {
fprintf(stderr,"### Error reading header bytes of ADTS frame\n"); fprint_err("### Error reading header bytes of ADTS frame\n"
fprintf(stderr," (in frame starting at " OFFSET_T_FORMAT ")\n",posn); " (in frame starting at " OFFSET_T_FORMAT ")\n",posn);
free(data); free(data);
return 1; return 1;
} }
#if DEBUG #if DEBUG
printf("ADTS frame\n"); print_msg("ADTS frame\n");
print_data(stdout,"Start",header,JUST_ENOUGH,JUST_ENOUGH); print_data(stdout,"Start",header,JUST_ENOUGH,JUST_ENOUGH);
#endif #endif
if (header[0] != 0xFF || (header[1] & 0xF0) != 0xF0) if (header[0] != 0xFF || (header[1] & 0xF0) != 0xF0)
{ {
fprintf(stderr,"### ADTS frame does not start with '1111 1111 1111'" fprint_err("### ADTS frame does not start with '1111 1111 1111'"
" syncword - lost synchronisation?\n" " syncword - lost synchronisation?\n"
" Found 0x%X%X%X instead of 0xFFF\n", " Found 0x%X%X%X instead of 0xFFF\n",
(unsigned)(header[0] & 0xF0) >> 4, (unsigned)(header[0] & 0xF0) >> 4,
(header[0] & 0x0F), (header[0] & 0x0F),
(unsigned)(header[1] & 0xF0) >> 4); (unsigned)(header[1] & 0xF0) >> 4);
fprintf(stderr," (in frame starting at " OFFSET_T_FORMAT ")\n",posn); fprint_err(" (in frame starting at " OFFSET_T_FORMAT ")\n",posn);
return 1; return 1;
} }
id = (header[1] & 0x08) >> 3; id = (header[1] & 0x08) >> 3;
#if DEBUG #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 #endif
layer = (header[1] & 0x06) >> 1; layer = (header[1] & 0x06) >> 1;
if (layer != 0) if (layer != 0)
printf(" layer is %d, not 0 (in frame at " OFFSET_T_FORMAT ")\n", fprint_msg(" layer is %d, not 0 (in frame at " OFFSET_T_FORMAT ")\n",
layer,posn); layer,posn);
// Experience appears to show that emphasis doesn't exist in MPEG-2 AVC. // Experience appears to show that emphasis doesn't exist in MPEG-2 AVC.
// But it does exist in (ID=1) MPEG-4 streams. // 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); frame_length = (header[4] << 5) | ((unsigned)(header[5] & 0xF8) >> 3);
} }
#if DEBUG #if DEBUG
printf(" length %d\n",frame_length); fprint_msg(" length %d\n",frame_length);
#endif #endif
data = malloc(frame_length); data = malloc(frame_length);
if (data == NULL) 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); free(data);
return 1; return 1;
} }
@ -142,9 +143,9 @@ extern int read_next_adts_frame(int file,
if (err) if (err)
{ {
if (err == EOF) if (err == EOF)
fprintf(stderr,"### Unexpected EOF reading rest of ADTS frame\n"); print_err("### Unexpected EOF reading rest of ADTS frame\n");
else else
fprintf(stderr,"### Error reading rest of ADTS frame\n"); print_err("### Error reading rest of ADTS frame\n");
free(data); free(data);
return 1; return 1;
} }

Wyświetl plik

@ -32,6 +32,7 @@
#include <string.h> #include <string.h>
#include "compat.h" #include "compat.h"
#include "printing_fns.h"
#include "audio_fns.h" #include "audio_fns.h"
#include "adts_fns.h" #include "adts_fns.h"
#include "l2audio_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); audio_frame_p new = malloc(SIZEOF_AUDIO_FRAME);
if (new == NULL) if (new == NULL)
{ {
fprintf(stderr,"### Unable to allocate audio frame datastructure\n"); fprint_err("### Unable to allocate audio frame datastructure\n");
return 1; return 1;
} }
@ -110,8 +111,8 @@ extern int read_next_audio_frame(int file,
case AUDIO_AC3: case AUDIO_AC3:
return read_next_ac3_frame(file, frame); return read_next_ac3_frame(file, frame);
default: default:
fprintf(stderr,"### Unrecognised audio type %d - cannot get next audio frame\n", fprint_err("### Unrecognised audio type %d - cannot get next audio frame\n",
audio_type); audio_type);
return 1; return 1;
} }
} }

189
avs.c
Wyświetl plik

@ -38,6 +38,7 @@
#include <string.h> #include <string.h>
#include "compat.h" #include "compat.h"
#include "printing_fns.h"
#include "avs_fns.h" #include "avs_fns.h"
#include "es_fns.h" #include "es_fns.h"
#include "ts_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 // AVS item *data* stuff
// ------------------------------------------------------------ // ------------------------------------------------------------
@ -102,7 +88,7 @@ extern int build_avs_context(ES_p es,
avs_context_p new = malloc(SIZEOF_AVS_CONTEXT); avs_context_p new = malloc(SIZEOF_AVS_CONTEXT);
if (new == NULL) if (new == NULL)
{ {
fprintf(stderr,"### Unable to allocate AVS context datastructure\n"); print_err("### Unable to allocate AVS context datastructure\n");
return 1; return 1;
} }
@ -214,15 +200,15 @@ extern int avs_picture_coding_type(ES_unit_p unit)
return picture_coding_type; return picture_coding_type;
else else
{ {
fprintf(stderr,"AVS Picture coding type %d (in %02x)\n", fprint_err("AVS Picture coding type %d (in %02x)\n",
picture_coding_type,unit->data[3]); picture_coding_type,unit->data[3]);
return 0; return 0;
} }
} }
else else
{ {
fprintf(stderr,"AVS 'frame' with start code %02x does not have picture coding type\n", fprint_err("AVS 'frame' with start code %02x does not have picture coding type\n",
unit->data[0]); unit->data[0]);
return 0; return 0;
} }
} }
@ -242,14 +228,14 @@ static int build_avs_frame(avs_context_p context,
avs_frame_p new = malloc(SIZEOF_AVS_FRAME); avs_frame_p new = malloc(SIZEOF_AVS_FRAME);
if (new == NULL) if (new == NULL)
{ {
fprintf(stderr,"### Unable to allocate AVS frame datastructure\n"); print_err("### Unable to allocate AVS frame datastructure\n");
return 1; return 1;
} }
err = build_ES_unit_list(&(new->list)); err = build_ES_unit_list(&(new->list));
if (err) 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); free(new);
return 1; return 1;
} }
@ -276,8 +262,8 @@ static int build_avs_frame(avs_context_p context,
new->aspect_ratio = (data[10] & 0x3C) >> 2; new->aspect_ratio = (data[10] & 0x3C) >> 2;
new->frame_rate_code = ((data[10] & 0x03) << 2) | ((data[11] & 0xC0) >> 4); new->frame_rate_code = ((data[10] & 0x03) << 2) | ((data[11] & 0xC0) >> 4);
#if DEBUG #if DEBUG
printf("aspect_ratio=%d, frame_rate_code=%d (%.2f)\n",new->aspect_ratio, 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)); new->frame_rate_code,avs_frame_rate(new->frame_rate_code));
#endif #endif
} }
else if (is_avs_seq_end_item(unit)) else if (is_avs_seq_end_item(unit))
@ -288,9 +274,8 @@ static int build_avs_frame(avs_context_p context,
} }
else else
{ {
fprintf(stderr, fprint_err("!!! Building AVS frame that starts with a %s (%02x)\n",
"!!! Building AVS frame that starts with a %s (%02x)\n", avs_start_code_str(unit->start_code),unit->start_code);
avs_start_code_str(unit->start_code),unit->start_code);
new->is_frame = FALSE; new->is_frame = FALSE;
new->is_sequence_header = FALSE; new->is_sequence_header = FALSE;
new->picture_coding_type = 0xFF; // Meaningless value, just in case 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); err = append_to_avs_frame(new,unit);
if (err) if (err)
{ {
fprintf(stderr,"### Error appending first ES unit to AVS %s\n", fprint_err("### Error appending first ES unit to AVS %s\n",
avs_start_code_str(unit->start_code)); avs_start_code_str(unit->start_code));
free_avs_frame(&new); free_avs_frame(&new);
return 1; return 1;
} }
@ -331,94 +316,23 @@ extern void free_avs_frame(avs_frame_p *frame)
return; 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 #if DEBUG_GET_NEXT_PICTURE
/* /*
* Print a representation of an item for debugging * Print a representation of an item for debugging
*/ */
static void _show_item(ES_unit_p unit) static void _show_item(ES_unit_p unit)
{ {
printf("__ "); print_msg("__ ");
if (unit == NULL) if (unit == NULL)
{ {
printf("<no ES unit>\n"); print_msg("<no ES unit>\n");
return; return;
} }
if (is_avs_frame_item(unit)) 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 else
printf("%s",avs_start_code_str(unit->start_code)); fprint_msg("%s",avs_start_code_str(unit->start_code));
printf(" at " OFFSET_T_FORMAT "/%d for %d\n", fprint_msg(" at " OFFSET_T_FORMAT "/%d for %d\n",
unit->start_posn.infile,unit->start_posn.inpacket,unit->data_len); unit->start_posn.infile,unit->start_posn.inpacket,unit->data_len);
} }
#endif #endif
@ -458,7 +372,7 @@ static int get_next_avs_single_frame(avs_context_p context,
int num_slices = 0; int num_slices = 0;
int had_slice = FALSE; int had_slice = FALSE;
int last_slice_start_code = 0; 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 #endif
context->last_item = NULL; 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 DEBUG_GET_NEXT_PICTURE
if (verbose) if (verbose)
{ {
printf("__ --------------------------------- <start frame>\n"); print_msg("__ --------------------------------- <start frame>\n");
_show_item(item); _show_item(item);
} }
#endif #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 // A sequence end is a single item, so we're done
#if DEBUG_GET_NEXT_PICTURE #if DEBUG_GET_NEXT_PICTURE
if (verbose) if (verbose)
printf("__ --------------------------------- <end frame>\n"); print_msg("__ --------------------------------- <end frame>\n");
#endif #endif
return 0; return 0;
} }
@ -566,7 +480,7 @@ static int get_next_avs_single_frame(avs_context_p context,
err = append_to_avs_frame(*frame,item); err = append_to_avs_frame(*frame,item);
if (err) 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); free_avs_frame(frame);
return 1; return 1;
} }
@ -585,15 +499,15 @@ static int get_next_avs_single_frame(avs_context_p context,
if (num_slices > 1) if (num_slices > 1)
{ {
ES_unit_p unit = &(*frame)->list->array[(*frame)->list->length-1]; ES_unit_p unit = &(*frame)->list->array[(*frame)->list->length-1];
printf("__ ...\n"); print_msg("__ ...\n");
printf("__ slice %2x",last_slice_start_code); fprint_msg("__ slice %2x",last_slice_start_code);
printf(" at " OFFSET_T_FORMAT "/%d for %d\n", fprint_msg(" at " OFFSET_T_FORMAT "/%d for %d\n",
unit->start_posn.infile,unit->start_posn.inpacket, unit->start_posn.infile,unit->start_posn.inpacket,
unit->data_len); 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) if (in_frame || in_sequence_header)
_show_item(item); _show_item(item);
} }
@ -682,7 +596,7 @@ extern int write_avs_frame_as_TS(TS_writer_p tswriter,
DEFAULT_VIDEO_STREAM_ID); DEFAULT_VIDEO_STREAM_ID);
if (err) if (err)
{ {
fprintf(stderr,"### Error writing out frame list to TS\n"); print_err("### Error writing out frame list to TS\n");
return err; 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); video_pid,DEFAULT_VIDEO_STREAM_ID);
if (err) if (err)
{ {
fprintf(stderr,"### Error writing out frame list to TS\n"); print_err("### Error writing out frame list to TS\n");
return err; 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); video_pid,DEFAULT_VIDEO_STREAM_ID);
if (err) if (err)
{ {
fprintf(stderr,"### Error writing out frame list to TS\n"); print_err("### Error writing out frame list to TS\n");
return err; return err;
} }
} }
@ -826,7 +740,7 @@ extern int write_avs_frame_as_ES(FILE *output,
err = write_ES_unit(output,unit); err = write_ES_unit(output,unit);
if (err) if (err)
{ {
fprintf(stderr,"### Error writing out frame list to ES\n"); print_err("### Error writing out frame list to ES\n");
return err; return err;
} }
} }
@ -840,36 +754,35 @@ extern int write_avs_frame_as_ES(FILE *output,
* - `frame` is the frame to report on * - `frame` is the frame to report on
* - if `report_data`, then the component ES units will be printed out as well * - if `report_data`, then the component ES units will be printed out as well
*/ */
extern void report_avs_frame(FILE *stream, extern void report_avs_frame(avs_frame_p frame,
avs_frame_p frame,
int report_data) int report_data)
{ {
if (frame->is_frame) if (frame->is_frame)
{ {
printf("%s #%02d", fprint_msg("%s #%02d",
AVS_PICTURE_CODING_STR(frame->picture_coding_type), AVS_PICTURE_CODING_STR(frame->picture_coding_type),
frame->picture_distance); frame->picture_distance);
printf("\n"); print_msg("\n");
} }
else if (frame->is_sequence_header) else if (frame->is_sequence_header)
{ {
printf("Sequence header: "); print_msg("Sequence header: ");
printf(" frame rate %d (%.2f), aspect ratio %d (%s)", fprint_msg(" frame rate %d (%.2f), aspect ratio %d (%s)",
frame->frame_rate_code, frame->frame_rate_code,
avs_frame_rate(frame->frame_rate_code), avs_frame_rate(frame->frame_rate_code),
frame->aspect_ratio, frame->aspect_ratio,
(frame->aspect_ratio==1?"SAR: 1.0": (frame->aspect_ratio==1?"SAR: 1.0":
frame->aspect_ratio==2?"4/3": frame->aspect_ratio==2?"4/3":
frame->aspect_ratio==3?"16/9": frame->aspect_ratio==3?"16/9":
frame->aspect_ratio==4?"2.21/1":"???")); frame->aspect_ratio==4?"2.21/1":"???"));
printf("\n"); print_msg("\n");
} }
else else
{ {
printf("Sequence end\n"); print_msg("Sequence end\n");
} }
if (report_data) if (report_data)
report_ES_unit_list(stream,"ES units",frame->list); report_ES_unit_list("ES units",frame->list);
} }
// Local Variables: // Local Variables:

Wyświetl plik

@ -35,11 +35,6 @@
* Return a string representing the start code * Return a string representing the start code
*/ */
extern const char *avs_start_code_str(byte 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 * 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. * Report on an AVS frame's contents.
* *
* - `stream` is where to write the information
* - `frame` is the frame to report on * - `frame` is the frame to report on
* - if `report_data`, then the component ES units will be printed out as well * - if `report_data`, then the component ES units will be printed out as well
*/ */
extern void report_avs_frame(FILE *stream, extern void report_avs_frame(avs_frame_p frame,
avs_frame_p frame,
int report_data); int report_data);
#endif // _avs_fns #endif // _avs_fns

17
es.c
Wyświetl plik

@ -37,6 +37,7 @@
#endif // _WIN32 #endif // _WIN32
#include "compat.h" #include "compat.h"
#include "printing_fns.h"
#include "misc_fns.h" #include "misc_fns.h"
#include "pes_fns.h" #include "pes_fns.h"
#include "tswrite_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. * 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) * - `name` is the name of the list (used in the header)
* - `list` is the list to report on * - `list` is the list to report on
*/ */
extern void report_ES_unit_list(FILE *stream, extern void report_ES_unit_list(char *name,
char *name,
ES_unit_list_p list) ES_unit_list_p list)
{ {
fprintf(stream,"ES unit list '%s': ",name); fprint_msg("ES unit list '%s': ",name);
if (list->array == NULL) if (list->array == NULL)
fprintf(stream,"<empty>\n"); print_msg("<empty>\n");
else else
{ {
int ii; int ii;
fprintf(stream,"%d item%s (size %d)\n",list->length, fprint_msg("%d item%s (size %d)\n",list->length,
(list->length==1?"":"s"),list->size); (list->length==1?"":"s"),list->size);
for (ii=0; ii<list->length; ii++) for (ii=0; ii<list->length; ii++)
{ {
fprintf(stream," "); print_msg(" ");
report_ES_unit(stream,&(list->array[ii])); report_ES_unit(stdout,&(list->array[ii]));
} }
} }
} }

Wyświetl plik

@ -335,12 +335,10 @@ extern void free_ES_unit_list(ES_unit_list_p *list);
/* /*
* Report on an ES unit list's contents. * 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) * - `name` is the name of the list (used in the header)
* - `list` is the list to report on * - `list` is the list to report on
*/ */
extern void report_ES_unit_list(FILE *stream, extern void report_ES_unit_list(char *name,
char *name,
ES_unit_list_p list); ES_unit_list_p list);
/* /*

Wyświetl plik

@ -116,9 +116,9 @@ static void report_avs_frames(ES_p es,
count++; count++;
if (!quiet) if (!quiet)
report_avs_frame(stdout,frame,FALSE); report_avs_frame(frame,FALSE);
else if (verbose) else if (verbose)
report_avs_frame(stdout,frame,TRUE); report_avs_frame(frame,TRUE);
if (frame->is_frame) if (frame->is_frame)
{ {
@ -306,7 +306,7 @@ static void find_h262_fields(ES_p es,
{ {
if (picture->picture_structure < 3) if (picture->picture_structure < 3)
{ {
report_h262_picture(stdout,picture,verbose); report_h262_picture(picture,verbose);
num_fields ++; num_fields ++;
} }
else else
@ -400,9 +400,9 @@ static void report_h262_frames(ES_p es,
count++; count++;
if (!quiet) if (!quiet)
report_h262_picture(stdout,picture,FALSE); report_h262_picture(picture,FALSE);
else if (verbose) else if (verbose)
report_h262_picture(stdout,picture,TRUE); report_h262_picture(picture,TRUE);
if (picture->is_picture) if (picture->is_picture)
{ {
@ -554,7 +554,7 @@ static void report_h262_afds(ES_p es,
double seconds = total_seconds - 60*minutes; double seconds = total_seconds - 60*minutes;
printf("%dm %4.1fs (frame %d @ %.2fs): ",minutes,seconds, printf("%dm %4.1fs (frame %d @ %.2fs): ",minutes,seconds,
frames,total_seconds); frames,total_seconds);
report_h262_picture(stdout,picture,FALSE); report_h262_picture(picture,FALSE);
afd = picture->afd; afd = picture->afd;
} }

8
h262.c
Wyświetl plik

@ -32,6 +32,7 @@
#include <string.h> #include <string.h>
#include "compat.h" #include "compat.h"
#include "printing_fns.h"
#include "h262_fns.h" #include "h262_fns.h"
#include "es_fns.h" #include "es_fns.h"
#include "ts_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 * - `picture` is the picture to report on
* - if `report_data`, then the component ES units will be printed out as well * - if `report_data`, then the component ES units will be printed out as well
*/ */
extern void report_h262_picture(FILE *stream, extern void report_h262_picture(h262_picture_p picture,
h262_picture_p picture,
int report_data) int report_data)
{ {
if (picture->is_picture) if (picture->is_picture)
@ -1162,7 +1162,7 @@ extern void report_h262_picture(FILE *stream,
printf(" (merged)"); printf(" (merged)");
printf(" %s",H262_ASPECT_RATIO_INFO_STR(picture->aspect_ratio_info)); printf(" %s",H262_ASPECT_RATIO_INFO_STR(picture->aspect_ratio_info));
if (picture->is_real_afd) if (picture->is_real_afd)
printf(" AFD "); printf(" AFD ");
else else
@ -1193,7 +1193,7 @@ extern void report_h262_picture(FILE *stream,
printf("Sequence end\n"); printf("Sequence end\n");
} }
if (report_data) if (report_data)
report_ES_unit_list(stream,"ES units",picture->list); report_ES_unit_list("ES units",picture->list);
} }
// Local Variables: // Local Variables:

Wyświetl plik

@ -224,12 +224,10 @@ extern int write_h262_picture_as_ES(FILE *output,
/* /*
* Report on an H.262 picture's contents. * Report on an H.262 picture's contents.
* *
* - `stream` is where to write the information
* - `picture` is the picture to report on * - `picture` is the picture to report on
* - if `report_data`, then the component ES units will be printed out as well * - if `report_data`, then the component ES units will be printed out as well
*/ */
extern void report_h262_picture(FILE *stream, extern void report_h262_picture(h262_picture_p picture,
h262_picture_p picture,
int report_data); int report_data);
#endif // _h262_fns #endif // _h262_fns