From: Dan D. <dde...@us...> - 2004-03-15 20:31:52
|
Update of /cvsroot/libdv/libdv/libdv In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26105/libdv Modified Files: audio.c dv.c dv.h Log Message: fix widescreen detection, added dv_is_letterbox and dv_is_normal_speed Index: audio.c =================================================================== RCS file: /cvsroot/libdv/libdv/libdv/audio.c,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -r1.22 -r1.23 *** audio.c 23 Nov 2003 22:30:37 -0000 1.22 --- audio.c 15 Mar 2004 20:22:42 -0000 1.23 *************** *** 36,39 **** --- 36,41 ---- #include "audio.h" + int dv_is_normal_speed (dv_decoder_t*); + /** @file * @ingroup decoder *************** *** 365,369 **** dv_aaux_asc_t *dv_aaux_asc = (dv_aaux_asc_t *)(inbuf + 80*6+80*16*4 + 3), *dv_aaux_asc1 = NULL; - int normal_speed = FALSE; if((dv_aaux_as->pc0 != 0x50) || (dv_aaux_asc->pc0 != 0x51)) goto bad_id; --- 367,370 ---- *************** *** 480,496 **** audio -> aaux_asc = *dv_aaux_asc; ! if(decoder->std == e_dv_std_iec_61834) { ! normal_speed = (dv_aaux_asc->pc3.speed == 0x20); ! } else if(decoder->std == e_dv_std_smpte_314m) { ! if(dv_aaux_as->pc3.system) { ! /* PAL */ ! normal_speed = (dv_aaux_asc->pc3.speed == 0x64); ! } else { ! /* NTSC */ ! normal_speed = (dv_aaux_asc->pc3.speed == 0x78); ! } /* else */ ! } /* else */ ! ! return(normal_speed); /* don't do audio if speed is not 1 */ bad_id: --- 481,485 ---- audio -> aaux_asc = *dv_aaux_asc; ! return dv_is_normal_speed(decoder); /* don't do audio if speed is not 1 */ bad_id: *************** *** 1029,1030 **** --- 1018,1037 ---- } #endif + + int dv_is_normal_speed (dv_decoder_t *dv) + { + int normal_speed = TRUE; + + if (dv->std == e_dv_std_iec_61834) { + normal_speed = (dv->audio->aaux_asc.pc3.speed == 0x20); + } else if (dv->std == e_dv_std_smpte_314m) { + if(dv->audio->aaux_as.pc3.system) { + /* PAL */ + normal_speed = (dv->audio->aaux_asc.pc3.speed == 0x64); + } else { + /* NTSC */ + normal_speed = (dv->audio->aaux_asc.pc3.speed == 0x78); + } /* else */ + } + return normal_speed; + } Index: dv.c =================================================================== RCS file: /cvsroot/libdv/libdv/libdv/dv.c,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -r1.26 -r1.27 *** dv.c 16 Jan 2004 21:45:18 -0000 1.26 --- dv.c 15 Mar 2004 20:22:42 -0000 1.27 *************** *** 549,553 **** { int ds, dif, audio_dif, result; - int ch; dif=0; --- 549,552 ---- *************** *** 602,609 **** dv_report_video_error (dv_decoder_t *dv, uint8_t *data) { ! int i, ! error_code; ! char err_msg1 [40], ! err_msg2 [40]; if (!dv -> video -> error_log) --- 601,605 ---- dv_report_video_error (dv_decoder_t *dv, uint8_t *data) { ! int i, error_code; if (!dv -> video -> error_log) *************** *** 620,623 **** --- 616,620 ---- #if 0 if (error_code) { + char err_msg1 [40], err_msg2 [40]; dv_get_timestamp (dv, err_msg1); dv_get_recording_datetime (dv, err_msg2); *************** *** 725,729 **** if ((id = dv -> vaux_pack [0x61]) != 0xff) { ! if (!(dv -> vaux_data [id] [1] & 0x07)) { return 1; } --- 722,726 ---- if ((id = dv -> vaux_pack [0x61]) != 0xff) { ! if ((dv->vaux_data[id][1] & 0x07) != (dv->std == e_dv_std_smpte_314m? 0x2:0x7)) { return 1; } *************** *** 741,745 **** if ((id = dv -> vaux_pack [0x61]) != 0xff) { ! if (dv -> vaux_data [id] [1] & 0x07) { return 1; } --- 738,759 ---- if ((id = dv -> vaux_pack [0x61]) != 0xff) { ! if ((dv->vaux_data[id][1] & 0x07) == (dv->std == e_dv_std_smpte_314m? 0x2:0x7)) { ! return 1; ! } ! return 0; ! } ! return -1; ! } ! ! /* --------------------------------------------------------------------------- ! */ ! int ! dv_format_letterbox (dv_decoder_t *dv) ! { ! uint8_t id; ! ! if ((id = dv -> vaux_pack [0x61]) != 0xff) { ! /* FIXME: what SMPTE 314M implementations support a letterbox format? */ ! if ((dv->vaux_data[id][1] & 0x07) == 0x3) { return 1; } Index: dv.h =================================================================== RCS file: /cvsroot/libdv/libdv/libdv/dv.h,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -r1.19 -r1.20 *** dv.h 14 Jan 2004 17:13:40 -0000 1.19 --- dv.h 15 Mar 2004 20:22:42 -0000 1.20 *************** *** 121,126 **** dv_system_50_fields (dv_decoder_t *dv), dv_format_normal (dv_decoder_t *dv), - dv_is_progressive (dv_decoder_t *dv), dv_format_wide (dv_decoder_t *dv), dv_get_vaux_pack (dv_decoder_t *dv, uint8_t pack_id, uint8_t *pack_data); --- 121,127 ---- dv_system_50_fields (dv_decoder_t *dv), dv_format_normal (dv_decoder_t *dv), dv_format_wide (dv_decoder_t *dv), + dv_format_letterbox (dv_decoder_t *dv), + dv_is_progressive (dv_decoder_t *dv), dv_get_vaux_pack (dv_decoder_t *dv, uint8_t pack_id, uint8_t *pack_data); *************** *** 139,142 **** --- 140,144 ---- */ extern int dv_is_new_recording (dv_decoder_t *dv, const uint8_t *buffer), + dv_is_normal_speed (dv_decoder_t *dv), dv_set_mixing_level (dv_decoder_t *dv, int new_value); |