From: John F. <jo...@us...> - 2009-03-25 13:53:25
|
Update of /cvsroot/ingex/ingex/player/ingex_player In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv14428 Modified Files: raw_dv_source.c dv_stream_connect.c frame_info.h mxf_source.c media_player.c Log Message: Add support for DV100 format, tested with DVCPRO-HD 1080i50 Index: dv_stream_connect.c =================================================================== RCS file: /cvsroot/ingex/ingex/player/ingex_player/dv_stream_connect.c,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** dv_stream_connect.c 29 Jan 2009 07:10:26 -0000 1.6 --- dv_stream_connect.c 25 Mar 2009 13:53:18 -0000 1.7 *************** *** 339,343 **** } } ! else /* DV50_FORMAT */ { if (connect->decodedFormat == UYVY_FORMAT) --- 339,343 ---- } } ! else /* DV50_FORMAT or DV100_FORMAT */ { if (connect->decodedFormat == UYVY_FORMAT) *************** *** 725,729 **** (streamInfo->format != DV25_YUV420_FORMAT && streamInfo->format != DV25_YUV411_FORMAT && ! streamInfo->format != DV50_FORMAT)) { return 0; --- 725,730 ---- (streamInfo->format != DV25_YUV420_FORMAT && streamInfo->format != DV25_YUV411_FORMAT && ! streamInfo->format != DV50_FORMAT && ! streamInfo->format != DV100_FORMAT)) { return 0; *************** *** 744,748 **** result = msk_accept_stream(sink, &decodedStreamInfo); } ! else /* DV50_FORMAT */ { decodedStreamInfo = *streamInfo; --- 745,749 ---- result = msk_accept_stream(sink, &decodedStreamInfo); } ! else /* DV50_FORMAT or DV100_FORMAT */ { decodedStreamInfo = *streamInfo; *************** *** 786,790 **** result = msk_accept_stream(sink, &decodedStreamInfo); } ! else /* streamInfo->format == DV50_FORMAT */ { decodedStreamInfo = *streamInfo; --- 787,791 ---- result = msk_accept_stream(sink, &decodedStreamInfo); } ! else /* streamInfo->format == DV50_FORMAT || streamInfo->format == DV100_FORMAT */ { decodedStreamInfo = *streamInfo; *************** *** 827,834 **** newConnect->dvDataSize = (stream_is_pal_frame_rate(streamInfo) ? 144000 : 120000); } ! else /* streamInfo->format == DV50_FORMAT */ { newConnect->dvDataSize = (stream_is_pal_frame_rate(streamInfo) ? 288000 : 240000); } if ((newConnect->dvData = (unsigned char*)calloc( newConnect->dvDataSize + FF_INPUT_BUFFER_PADDING_SIZE /* FFMPEG for some reason needs the extra space */, --- 828,839 ---- newConnect->dvDataSize = (stream_is_pal_frame_rate(streamInfo) ? 144000 : 120000); } ! else if (streamInfo->format == DV50_FORMAT) { newConnect->dvDataSize = (stream_is_pal_frame_rate(streamInfo) ? 288000 : 240000); } + else /* streamInfo->format == DV100_FORMAT */ + { + newConnect->dvDataSize = 576000; + } if ((newConnect->dvData = (unsigned char*)calloc( newConnect->dvDataSize + FF_INPUT_BUFFER_PADDING_SIZE /* FFMPEG for some reason needs the extra space */, Index: frame_info.h =================================================================== RCS file: /cvsroot/ingex/ingex/player/ingex_player/frame_info.h,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** frame_info.h 29 Jan 2009 07:10:26 -0000 1.8 --- frame_info.h 25 Mar 2009 13:53:18 -0000 1.9 *************** *** 80,83 **** --- 80,84 ---- DV25_YUV411_FORMAT, DV50_FORMAT, + DV100_FORMAT, D10_PICTURE_FORMAT, AVID_MJPEG_FORMAT, Index: media_player.c =================================================================== RCS file: /cvsroot/ingex/ingex/player/ingex_player/media_player.c,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** media_player.c 29 Jan 2009 07:10:26 -0000 1.10 --- media_player.c 25 Mar 2009 13:53:18 -0000 1.11 *************** *** 3654,3657 **** --- 3654,3660 ---- printf("DV50"); break; + case DV100_FORMAT: + printf("DV100"); + break; case D10_PICTURE_FORMAT: printf("D10 Picture"); Index: mxf_source.c =================================================================== RCS file: /cvsroot/ingex/ingex/player/ingex_player/mxf_source.c,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** mxf_source.c 19 Mar 2009 17:42:56 -0000 1.9 --- mxf_source.c 25 Mar 2009 13:53:18 -0000 1.10 *************** *** 1243,1246 **** --- 1243,1251 ---- outputStream->streamInfo.singleField = 1; } + else if (mxf_equals_ul(&track->essenceContainerLabel, &MXF_EC_L(DVBased_100_1080_50_I_ClipWrapped)) || + mxf_equals_ul(&track->essenceContainerLabel, &MXF_EC_L(DVBased_100_720_50_P_ClipWrapped))) + { + outputStream->streamInfo.format = DV100_FORMAT; + } else if (mxf_equals_ul(&track->essenceContainerLabel, &MXF_EC_L(DNxHD1080i120ClipWrapped)) || mxf_equals_ul(&track->essenceContainerLabel, &MXF_EC_L(DNxHD1080i185ClipWrapped)) || Index: raw_dv_source.c =================================================================== RCS file: /cvsroot/ingex/ingex/player/ingex_player/raw_dv_source.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** raw_dv_source.c 29 Jan 2009 07:10:27 -0000 1.4 --- raw_dv_source.c 25 Mar 2009 13:53:18 -0000 1.5 *************** *** 153,159 **** info->mbps = 50; } ! else if (byte == 0x14 || byte == 0x15 || byte == 0x18) { ! ml_log_error("DV 100 not yet supported\n"); return 5; } --- 153,163 ---- info->mbps = 50; } ! else if (byte == 0x14 || byte == 0x18) { ! info->mbps = 100; ! } ! else if (byte == 0x15) ! { ! ml_log_error("DV 100 at 60Hz not yet supported\n"); return 5; } *************** *** 214,222 **** source->frameSize = (info.is625 ? 144000 : 120000); } ! else /* info.mbps == 50 */ { source->streamInfo.format = DV50_FORMAT; source->frameSize = (info.is625 ? 288000 : 240000); } --- 218,236 ---- source->frameSize = (info.is625 ? 144000 : 120000); } ! else if (info.mbps == 50) { source->streamInfo.format = DV50_FORMAT; source->frameSize = (info.is625 ? 288000 : 240000); } + else if (info.mbps == 100) + { + /* TODO - support 720p DV100 which would use 288000 frameSize and different WxH */ + source->streamInfo.format = DV100_FORMAT; + source->streamInfo.width = 1440; + source->streamInfo.height = 1080; + source->streamInfo.aspectRatio.num = 16; + source->streamInfo.aspectRatio.den = 9; + source->frameSize = 576000; + } *************** *** 557,560 **** --- 571,577 ---- CHK_OFAIL(add_known_source_info(&newSource->streamInfo, SRC_INFO_FILE_TYPE, "DV 50")); break; + case DV100_FORMAT: + CHK_OFAIL(add_known_source_info(&newSource->streamInfo, SRC_INFO_FILE_TYPE, "DV 100")); + break; default: goto fail; |