From: John F. <jo...@us...> - 2013-06-06 13:36:24
|
Update of /cvsroot/ingex/ingex/studio/common In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv22829/studio/common Modified Files: MaterialResolution.cpp MaterialResolution.h ffmpeg_encoder.cpp ffmpeg_encoder.h ffmpeg_encoder_av.cpp ffmpeg_encoder_av.h ffmpeg_setup_codec.cpp ffmpeg_setup_codec.h test_ffmpeg_encoder.cpp test_ffmpeg_encoder_av.cpp Log Message: Refactoring re. VideoRaster Index: ffmpeg_encoder_av.h =================================================================== RCS file: /cvsroot/ingex/ingex/studio/common/ffmpeg_encoder_av.h,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** ffmpeg_encoder_av.h 22 Nov 2012 14:29:48 -0000 1.10 --- ffmpeg_encoder_av.h 6 Jun 2013 13:36:21 -0000 1.11 *************** *** 43,47 **** */ extern ffmpeg_encoder_av_t * ffmpeg_encoder_av_init (const char * filename, Ingex::MaterialResolution::EnumType res, ! Ingex::VideoRaster::EnumType raster, Ingex::PixelFormat::EnumType pixel_format, int64_t start_tc, int num_threads, --- 43,47 ---- */ extern ffmpeg_encoder_av_t * ffmpeg_encoder_av_init (const char * filename, Ingex::MaterialResolution::EnumType res, ! Ingex::VideoRaster raster, Ingex::PixelFormat::EnumType pixel_format, int64_t start_tc, int num_threads, Index: MaterialResolution.h =================================================================== RCS file: /cvsroot/ingex/ingex/studio/common/MaterialResolution.h,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** MaterialResolution.h 22 Nov 2012 14:29:48 -0000 1.14 --- MaterialResolution.h 6 Jun 2013 13:36:21 -0000 1.15 *************** *** 137,146 **** MaterialResolution(); MaterialResolution(EnumType e); ! EnumType EnumValue(); ! std::string Name(); ! Ingex::FileFormat::EnumType FileFormat(); ! Ingex::OperationalPattern::EnumType OperationalPattern(); ! bool CheckVideoFormat(Ingex::VideoRaster::EnumType raster, Ingex::PixelFormat::EnumType format); ! unsigned int KiloBitRate(Ingex::VideoRaster::EnumType raster); private: EnumType mEnum; --- 137,146 ---- MaterialResolution(); MaterialResolution(EnumType e); ! EnumType EnumValue() const; ! std::string Name() const; ! Ingex::FileFormat::EnumType FileFormat() const; ! Ingex::OperationalPattern::EnumType OperationalPattern() const; ! bool CheckVideoFormat(Ingex::VideoRaster raster, Ingex::PixelFormat::EnumType format) const; ! unsigned int KiloBitRate(Ingex::VideoRaster raster) const; private: EnumType mEnum; Index: test_ffmpeg_encoder_av.cpp =================================================================== RCS file: /cvsroot/ingex/ingex/studio/common/test_ffmpeg_encoder_av.cpp,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** test_ffmpeg_encoder_av.cpp 20 Dec 2012 11:06:05 -0000 1.12 --- test_ffmpeg_encoder_av.cpp 6 Jun 2013 13:36:21 -0000 1.13 *************** *** 521,525 **** /* init encoder */ ! encoder = ffmpeg_encoder_av_init(output_filename, output_format, raster, pixel_format, start, num_ffmpeg_threads, num_audio_inputs, nch); --- 521,525 ---- /* init encoder */ ! encoder = ffmpeg_encoder_av_init(output_filename, output_format, VideoRaster(raster), pixel_format, start, num_ffmpeg_threads, num_audio_inputs, nch); Index: ffmpeg_encoder.h =================================================================== RCS file: /cvsroot/ingex/ingex/studio/common/ffmpeg_encoder.h,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** ffmpeg_encoder.h 22 Nov 2012 14:29:48 -0000 1.11 --- ffmpeg_encoder.h 6 Jun 2013 13:36:21 -0000 1.12 *************** *** 39,43 **** * Return : true or false */ ! extern bool ffmpeg_encoder_check_available(Ingex::MaterialResolution::EnumType res, Ingex::VideoRaster::EnumType raster); /* --- 39,43 ---- * Return : true or false */ ! extern bool ffmpeg_encoder_check_available(const Ingex::MaterialResolution & res, const Ingex::VideoRaster & raster); /* *************** *** 47,51 **** * NULL if a problem occurred */ ! extern ffmpeg_encoder_t * ffmpeg_encoder_init(Ingex::MaterialResolution::EnumType res, Ingex::VideoRaster::EnumType raster, Ingex::PixelFormat::EnumType pixel_format, int num_threads); /* --- 47,51 ---- * NULL if a problem occurred */ ! extern ffmpeg_encoder_t * ffmpeg_encoder_init(const Ingex::MaterialResolution & res, const Ingex::VideoRaster & raster, Ingex::PixelFormat::EnumType pixel_format, int num_threads); /* Index: ffmpeg_setup_codec.cpp =================================================================== RCS file: /cvsroot/ingex/ingex/studio/common/ffmpeg_setup_codec.cpp,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** ffmpeg_setup_codec.cpp 22 Nov 2012 14:29:48 -0000 1.9 --- ffmpeg_setup_codec.cpp 6 Jun 2013 13:36:21 -0000 1.10 *************** *** 71,75 **** {} ! void ffmpeg_setup_video_codec(MaterialResolution::EnumType res, VideoRaster::EnumType raster, Ingex::PixelFormat::EnumType pixel_format, int threads, AVCodecContext * codec_context, MiscImageParams & image_params, size_t & video_outbuf_size) { --- 71,75 ---- {} ! void ffmpeg_setup_video_codec(const MaterialResolution & res, const VideoRaster & raster, Ingex::PixelFormat::EnumType pixel_format, int threads, AVCodecContext * codec_context, MiscImageParams & image_params, size_t & video_outbuf_size) { *************** *** 77,86 **** // Get raster details ! int width; ! int height; ! int fps_num; ! int fps_den; ! Interlace::EnumType interlace; ! VideoRaster::GetInfo(raster, width, height, fps_num, fps_den, interlace); // Set initial size parameters --- 77,84 ---- // Get raster details ! int width = raster.Width(); ! int height = raster.Height(); ! Rational rate = raster.Rate(); ! Interlace::EnumType interlace = raster.InterlaceEnumValue(); // Set initial size parameters *************** *** 92,96 **** // Set sample aspect for codec ! Rational sar = VideoRaster::SampleAspectRatio(raster); codec_context->sample_aspect_ratio.num = sar.numerator; codec_context->sample_aspect_ratio.den = sar.denominator; --- 90,94 ---- // Set sample aspect for codec ! Rational sar = raster.SampleAspectRatio(); codec_context->sample_aspect_ratio.num = sar.numerator; codec_context->sample_aspect_ratio.den = sar.denominator; *************** *** 101,106 **** For fixed-fps content, timebase should be 1/framerate and timestamp increments should be identically 1. */ ! codec_context->time_base.num = fps_den; ! codec_context->time_base.den = fps_num; --- 99,104 ---- For fixed-fps content, timebase should be 1/framerate and timestamp increments should be identically 1. */ ! codec_context->time_base.num = rate.denominator; ! codec_context->time_base.den = rate.numerator; *************** *** 117,121 **** { // Select number of threaded based on picture size/codec type ! switch (res) { case MaterialResolution::DV100_MOV: --- 115,119 ---- { // Select number of threaded based on picture size/codec type ! switch (res.EnumValue()) { case MaterialResolution::DV100_MOV: *************** *** 140,144 **** } ! switch (res) { case MaterialResolution::XDCAMHD422_MXF_1A: --- 138,142 ---- } ! switch (res.EnumValue()) { case MaterialResolution::XDCAMHD422_MXF_1A: *************** *** 238,242 **** // Set cropping for NTSC ! switch (raster) { case VideoRaster::PAL_4x3: --- 236,240 ---- // Set cropping for NTSC ! switch (raster.EnumValue()) { case VideoRaster::PAL_4x3: *************** *** 266,270 **** // Set cropping for NTSC ! switch (raster) { case VideoRaster::PAL_4x3: --- 264,268 ---- // Set cropping for NTSC ! switch (raster.EnumValue()) { case VideoRaster::PAL_4x3: *************** *** 295,299 **** // Set coding parameters ! switch (res) { // Baseline Profile --- 293,297 ---- // Set coding parameters ! switch (res.EnumValue()) { // Baseline Profile *************** *** 326,330 **** codec_context->flags2 |= CODEC_FLAG2_WPRED; //codec_context->weighted_p_pred = 0; ! switch (raster) { case VideoRaster::PAL_4x3: --- 324,328 ---- codec_context->flags2 |= CODEC_FLAG2_WPRED; //codec_context->weighted_p_pred = 0; ! switch (raster.EnumValue()) { case VideoRaster::PAL_4x3: *************** *** 387,391 **** codec_context->flags2 |= CODEC_FLAG2_FASTPSKIP | CODEC_FLAG2_MIXED_REFS | CODEC_FLAG2_WPRED; //codec_context->weighted_p_pred = 0; ! switch (raster) { case VideoRaster::PAL_4x3: --- 385,389 ---- codec_context->flags2 |= CODEC_FLAG2_FASTPSKIP | CODEC_FLAG2_MIXED_REFS | CODEC_FLAG2_WPRED; //codec_context->weighted_p_pred = 0; ! switch (raster.EnumValue()) { case VideoRaster::PAL_4x3: *************** *** 449,453 **** //codec_context->weighted_p_pred = 0; /* ! switch (raster) { default: --- 447,451 ---- //codec_context->weighted_p_pred = 0; /* ! switch (raster.EnumValue()) { default: *************** *** 470,474 **** // Set coding parameters according to SMPTE 370M ! switch (raster) { case VideoRaster::PAL_4x3_B: --- 468,472 ---- // Set coding parameters according to SMPTE 370M ! switch (raster.EnumValue()) { case VideoRaster::PAL_4x3_B: *************** *** 495,499 **** // Set coding parameters according to SMPTE 370M ! switch (raster) { case VideoRaster::PAL_4x3_B: --- 493,497 ---- // Set coding parameters according to SMPTE 370M ! switch (raster.EnumValue()) { case VideoRaster::PAL_4x3_B: *************** *** 519,523 **** // Set coding parameters according to SMPTE 370M (note horizontal scaling in HD formats) ! switch (raster) { case VideoRaster::SMPTE274_25I: --- 517,521 ---- // Set coding parameters according to SMPTE 370M (note horizontal scaling in HD formats) ! switch (raster.EnumValue()) { case VideoRaster::SMPTE274_25I: *************** *** 567,571 **** int buffer_size = 0; const uint16_t * intra_matrix = 0; ! switch (res) { case MaterialResolution::IMX30_MXF_ATOM: --- 565,569 ---- int buffer_size = 0; const uint16_t * intra_matrix = 0; ! switch (res.EnumValue()) { case MaterialResolution::IMX30_MXF_ATOM: *************** *** 581,585 **** break; } ! switch (raster) { case VideoRaster::PAL_4x3: --- 579,583 ---- break; } ! switch (raster.EnumValue()) { case VideoRaster::PAL_4x3: *************** *** 614,618 **** break; } ! switch (raster) { case VideoRaster::PAL_4x3: --- 612,616 ---- break; } ! switch (raster.EnumValue()) { case VideoRaster::PAL_4x3: *************** *** 648,652 **** } //encoded_frame_size = (bit_rate / 8) * fps_den / fps_num; ! switch (raster) { case VideoRaster::PAL_4x3: --- 646,650 ---- } //encoded_frame_size = (bit_rate / 8) * fps_den / fps_num; ! switch (raster.EnumValue()) { case VideoRaster::PAL_4x3: *************** *** 672,676 **** // Set image padding ! switch (raster) { case VideoRaster::PAL_4x3: --- 670,674 ---- // Set image padding ! switch (raster.EnumValue()) { case VideoRaster::PAL_4x3: *************** *** 784,793 **** // Rate-dependent parameters ! switch (res) { case MaterialResolution::DNX36P_MXF_ATOM: case MaterialResolution::DNX36P_MOV: video_outbuf_size = 188416; // from VC-3 spec ! switch (fps_num) { case 25: --- 782,791 ---- // Rate-dependent parameters ! switch (res.EnumValue()) { case MaterialResolution::DNX36P_MXF_ATOM: case MaterialResolution::DNX36P_MOV: video_outbuf_size = 188416; // from VC-3 spec ! switch (rate.numerator) { case 25: *************** *** 799,803 **** break; default: ! fprintf(stderr, "VC3 unsupported frame rate %d/%d\n", fps_num, fps_den); break; } --- 797,801 ---- break; default: ! fprintf(stderr, "VC3 unsupported frame rate %d/%d\n", rate.numerator, rate.denominator); break; } *************** *** 808,812 **** case MaterialResolution::DNX120P_MOV: video_outbuf_size = 606208; // from VC-3 spec ! switch (fps_num) { case 25: --- 806,810 ---- case MaterialResolution::DNX120P_MOV: video_outbuf_size = 606208; // from VC-3 spec ! switch (rate.numerator) { case 25: *************** *** 825,829 **** break; default: ! fprintf(stderr, "VC3 unsupported frame rate %d/%d\n", fps_num, fps_den); break; } --- 823,827 ---- break; default: ! fprintf(stderr, "VC3 unsupported frame rate %d/%d\n", rate.numerator, rate.denominator); break; } *************** *** 834,838 **** case MaterialResolution::DNX185P_MOV: video_outbuf_size = 917504; // from VC-3 spec ! switch (fps_num) { case 25: --- 832,836 ---- case MaterialResolution::DNX185P_MOV: video_outbuf_size = 917504; // from VC-3 spec ! switch (rate.numerator) { case 25: *************** *** 851,855 **** break; default: ! fprintf(stderr, "VC3 unsupported frame rate %d/%d\n", fps_num, fps_den); break; } --- 849,853 ---- break; default: ! fprintf(stderr, "VC3 unsupported frame rate %d/%d\n", rate.numerator, rate.denominator); break; } *************** *** 869,877 **** } ! void ffmpeg_setup_audio_codec(MaterialResolution::EnumType res, AVCodecContext * codec_context, size_t & audio_outbuf_size) { ! //fprintf(stderr, "ffmpeg_setup_audio_codec %s\n", MaterialResolution::Name(res).c_str()); ! switch (res) { case MaterialResolution::MP3: --- 867,875 ---- } ! void ffmpeg_setup_audio_codec(const MaterialResolution & res, AVCodecContext * codec_context, size_t & audio_outbuf_size) { ! //fprintf(stderr, "ffmpeg_setup_audio_codec %s\n", res.Name().c_str()); ! switch (res.EnumValue()) { case MaterialResolution::MP3: Index: MaterialResolution.cpp =================================================================== RCS file: /cvsroot/ingex/ingex/studio/common/MaterialResolution.cpp,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** MaterialResolution.cpp 12 Apr 2013 10:44:44 -0000 1.22 --- MaterialResolution.cpp 6 Jun 2013 13:36:21 -0000 1.23 *************** *** 399,418 **** } ! MaterialResolution::EnumType MaterialResolution::EnumValue() { return mEnum; } ! std::string MaterialResolution::Name() { return mName; } ! FileFormat::EnumType MaterialResolution::FileFormat() { return mFileFormat; } ! OperationalPattern::EnumType MaterialResolution::OperationalPattern() { return mOperationalPattern; --- 399,418 ---- } ! MaterialResolution::EnumType MaterialResolution::EnumValue() const { return mEnum; } ! std::string MaterialResolution::Name() const { return mName; } ! FileFormat::EnumType MaterialResolution::FileFormat() const { return mFileFormat; } ! OperationalPattern::EnumType MaterialResolution::OperationalPattern() const { return mOperationalPattern; *************** *** 556,560 **** and also return approximate bytes per minute. */ ! bool MaterialResolution::CheckVideoFormat(Ingex::VideoRaster::EnumType raster, Ingex::PixelFormat::EnumType format) { bool result = false; --- 556,560 ---- and also return approximate bytes per minute. */ ! bool MaterialResolution::CheckVideoFormat(Ingex::VideoRaster raster, Ingex::PixelFormat::EnumType format) const { bool result = false; *************** *** 567,571 **** case DV25_MXF_ATOM: case DV25_MOV: ! switch (raster) { case Ingex::VideoRaster::PAL_4x3_B: --- 567,571 ---- case DV25_MXF_ATOM: case DV25_MOV: ! switch (raster.EnumValue()) { case Ingex::VideoRaster::PAL_4x3_B: *************** *** 590,594 **** case DV50_MXF_ATOM: case DV50_MOV: ! switch (raster) { case Ingex::VideoRaster::PAL_4x3_B: --- 590,594 ---- case DV50_MXF_ATOM: case DV50_MOV: ! switch (raster.EnumValue()) { case Ingex::VideoRaster::PAL_4x3_B: *************** *** 608,612 **** case DV100_MXF_ATOM: case DV100_MOV: ! switch (raster) { case Ingex::VideoRaster::SMPTE274_25I: --- 608,612 ---- case DV100_MXF_ATOM: case DV100_MOV: ! switch (raster.EnumValue()) { case Ingex::VideoRaster::SMPTE274_25I: *************** *** 633,637 **** case IMX40_MXF_1A: case IMX50_MXF_1A: ! switch (raster) { case Ingex::VideoRaster::PAL_4x3: --- 633,637 ---- case IMX40_MXF_1A: case IMX50_MXF_1A: ! switch (raster.EnumValue()) { case Ingex::VideoRaster::PAL_4x3: *************** *** 655,659 **** break; case MJPEG21_MXF_ATOM: ! switch (raster) { case Ingex::VideoRaster::PAL_4x3: --- 655,659 ---- break; case MJPEG21_MXF_ATOM: ! switch (raster.EnumValue()) { case Ingex::VideoRaster::PAL_4x3: *************** *** 671,675 **** break; case MJPEG31_MXF_ATOM: ! switch (raster) { case Ingex::VideoRaster::PAL_4x3: --- 671,675 ---- break; case MJPEG31_MXF_ATOM: ! switch (raster.EnumValue()) { case Ingex::VideoRaster::PAL_4x3: *************** *** 687,691 **** break; case MJPEG101_MXF_ATOM: ! switch (raster) { case Ingex::VideoRaster::PAL_4x3: --- 687,691 ---- break; case MJPEG101_MXF_ATOM: ! switch (raster.EnumValue()) { case Ingex::VideoRaster::PAL_4x3: *************** *** 705,709 **** case MJPEG151S_MXF_ATOM: case MJPEG201_MXF_ATOM: ! switch (raster) { case Ingex::VideoRaster::PAL_4x3: --- 705,709 ---- case MJPEG151S_MXF_ATOM: case MJPEG201_MXF_ATOM: ! switch (raster.EnumValue()) { case Ingex::VideoRaster::PAL_4x3: *************** *** 724,728 **** case DNX120I_MOV: case DNX185I_MOV: ! switch (raster) { case Ingex::VideoRaster::SMPTE274_25I: --- 724,728 ---- case DNX120I_MOV: case DNX185I_MOV: ! switch (raster.EnumValue()) { case Ingex::VideoRaster::SMPTE274_25I: *************** *** 739,743 **** case DNX36P_MXF_ATOM: case DNX36P_MOV: ! switch (raster) { case Ingex::VideoRaster::SMPTE274_25PSF: --- 739,743 ---- case DNX36P_MXF_ATOM: case DNX36P_MOV: ! switch (raster.EnumValue()) { case Ingex::VideoRaster::SMPTE274_25PSF: *************** *** 763,767 **** case DNX120P_MOV: case DNX185P_MOV: ! switch (raster) { case Ingex::VideoRaster::SMPTE274_25PSF: --- 763,767 ---- case DNX120P_MOV: case DNX185P_MOV: ! switch (raster.EnumValue()) { case Ingex::VideoRaster::SMPTE274_25PSF: *************** *** 791,795 **** case XDCAMHD422_MOV: case XDCAMHD422_MXF_1A: ! switch (raster) { case Ingex::VideoRaster::SMPTE274_25I: --- 791,795 ---- case XDCAMHD422_MOV: case XDCAMHD422_MXF_1A: ! switch (raster.EnumValue()) { case Ingex::VideoRaster::SMPTE274_25I: *************** *** 811,815 **** case SD_MPEG4_MP3_MOV: case SD_MPEG4_PCM_MOV: ! switch (raster) { case Ingex::VideoRaster::PAL_4x3: --- 811,815 ---- case SD_MPEG4_MP3_MOV: case SD_MPEG4_PCM_MOV: ! switch (raster.EnumValue()) { case Ingex::VideoRaster::PAL_4x3: *************** *** 829,833 **** case SD_MPEG4BP_AAC_MP4: case SD_MPEG4BP_AAC_MOV: ! switch (raster) { case Ingex::VideoRaster::PAL_4x3: --- 829,833 ---- case SD_MPEG4BP_AAC_MP4: case SD_MPEG4BP_AAC_MOV: ! switch (raster.EnumValue()) { case Ingex::VideoRaster::PAL_4x3: *************** *** 847,851 **** case SD_MPEG4MP_AAC_MOV: case SD_MPEG4MP_AAC_MP4: ! switch (raster) { case Ingex::VideoRaster::PAL_4x3: --- 847,851 ---- case SD_MPEG4MP_AAC_MOV: case SD_MPEG4MP_AAC_MP4: ! switch (raster.EnumValue()) { case Ingex::VideoRaster::PAL_4x3: *************** *** 864,868 **** case SD_MPEG4_IPAD_AAC_MP4: ! switch (raster) { case Ingex::VideoRaster::PAL_4x3: --- 864,868 ---- case SD_MPEG4_IPAD_AAC_MP4: ! switch (raster.EnumValue()) { case Ingex::VideoRaster::PAL_4x3: *************** *** 882,886 **** case UNC_RAW: case UNC_MXF_ATOM: ! switch (raster) { case Ingex::VideoRaster::PAL_4x3: --- 882,886 ---- case UNC_RAW: case UNC_MXF_ATOM: ! switch (raster.EnumValue()) { case Ingex::VideoRaster::PAL_4x3: *************** *** 926,930 **** } ! unsigned int MaterialResolution::KiloBitRate(Ingex::VideoRaster::EnumType raster) { unsigned int bit_rate = 0; --- 926,930 ---- } ! unsigned int MaterialResolution::KiloBitRate(Ingex::VideoRaster raster) const { unsigned int bit_rate = 0; *************** *** 977,981 **** case DNX36P_MXF_ATOM: case DNX36P_MOV: ! switch (raster) { case Ingex::VideoRaster::SMPTE274_25I: --- 977,981 ---- case DNX36P_MXF_ATOM: case DNX36P_MOV: ! switch (raster.EnumValue()) { case Ingex::VideoRaster::SMPTE274_25I: *************** *** 994,998 **** case DNX120P_MXF_ATOM: case DNX120P_MOV: ! switch (raster) { case Ingex::VideoRaster::SMPTE274_25I: --- 994,998 ---- case DNX120P_MXF_ATOM: case DNX120P_MOV: ! switch (raster.EnumValue()) { case Ingex::VideoRaster::SMPTE274_25I: *************** *** 1014,1018 **** case DNX185P_MXF_ATOM: case DNX185P_MOV: ! switch (raster) { case Ingex::VideoRaster::SMPTE274_25I: --- 1014,1018 ---- case DNX185P_MXF_ATOM: case DNX185P_MOV: ! switch (raster.EnumValue()) { case Ingex::VideoRaster::SMPTE274_25I: *************** *** 1053,1057 **** case UNC_RAW: case UNC_MXF_ATOM: ! switch (raster) { case Ingex::VideoRaster::PAL_4x3: --- 1053,1057 ---- case UNC_RAW: case UNC_MXF_ATOM: ! switch (raster.EnumValue()) { case Ingex::VideoRaster::PAL_4x3: Index: test_ffmpeg_encoder.cpp =================================================================== RCS file: /cvsroot/ingex/ingex/studio/common/test_ffmpeg_encoder.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** test_ffmpeg_encoder.cpp 22 Nov 2012 14:29:48 -0000 1.7 --- test_ffmpeg_encoder.cpp 6 Jun 2013 13:36:21 -0000 1.8 *************** *** 44,52 **** FILE *output_fp = NULL; uint8_t *in, *out; ! VideoRaster::EnumType raster = VideoRaster::NONE; Ingex::PixelFormat::EnumType pixel_format = Ingex::PixelFormat::NONE; int benchmark_encode = 0; int n; ! MaterialResolution::EnumType res = MaterialResolution::NONE; n = 1; --- 44,52 ---- FILE *output_fp = NULL; uint8_t *in, *out; ! VideoRaster raster(VideoRaster::NONE); Ingex::PixelFormat::EnumType pixel_format = Ingex::PixelFormat::NONE; int benchmark_encode = 0; int n; ! MaterialResolution::EnumType res_enum = MaterialResolution::NONE; n = 1; *************** *** 69,79 **** if (strcmp(argv[n+1], "DV25") == 0) { ! res = MaterialResolution::DV25_RAW; ! raster = VideoRaster::PAL_16x9_B; pixel_format = Ingex::PixelFormat::YUV_PLANAR_420_DV; } else if (strcmp(argv[n+1], "DV50") == 0) { ! res = MaterialResolution::DV50_RAW; raster = VideoRaster::PAL_16x9_B; pixel_format = Ingex::PixelFormat::YUV_PLANAR_422; --- 69,79 ---- if (strcmp(argv[n+1], "DV25") == 0) { ! res_enum = MaterialResolution::DV25_RAW; ! raster = VideoRaster(VideoRaster::PAL_16x9_B); pixel_format = Ingex::PixelFormat::YUV_PLANAR_420_DV; } else if (strcmp(argv[n+1], "DV50") == 0) { ! res_enum = MaterialResolution::DV50_RAW; raster = VideoRaster::PAL_16x9_B; pixel_format = Ingex::PixelFormat::YUV_PLANAR_422; *************** *** 81,85 **** else if (strcmp(argv[n+1], "IMX30") == 0) { ! res = MaterialResolution::IMX30_MXF_ATOM; raster = VideoRaster::PAL_16x9; pixel_format = Ingex::PixelFormat::YUV_PLANAR_422; --- 81,85 ---- else if (strcmp(argv[n+1], "IMX30") == 0) { ! res_enum = MaterialResolution::IMX30_MXF_ATOM; raster = VideoRaster::PAL_16x9; pixel_format = Ingex::PixelFormat::YUV_PLANAR_422; *************** *** 87,91 **** else if (strcmp(argv[n+1], "IMX40") == 0) { ! res = MaterialResolution::IMX40_MXF_ATOM; raster = VideoRaster::PAL_16x9; pixel_format = Ingex::PixelFormat::YUV_PLANAR_422; --- 87,91 ---- else if (strcmp(argv[n+1], "IMX40") == 0) { ! res_enum = MaterialResolution::IMX40_MXF_ATOM; raster = VideoRaster::PAL_16x9; pixel_format = Ingex::PixelFormat::YUV_PLANAR_422; *************** *** 93,97 **** else if (strcmp(argv[n+1], "IMX50") == 0) { ! res = MaterialResolution::IMX50_MXF_ATOM; raster = VideoRaster::PAL_16x9; pixel_format = Ingex::PixelFormat::YUV_PLANAR_422; --- 93,97 ---- else if (strcmp(argv[n+1], "IMX50") == 0) { ! res_enum = MaterialResolution::IMX50_MXF_ATOM; raster = VideoRaster::PAL_16x9; pixel_format = Ingex::PixelFormat::YUV_PLANAR_422; *************** *** 99,103 **** else if (strcmp(argv[n+1], "DNX36p") == 0) { ! res = MaterialResolution::DNX36P_MXF_ATOM; raster = VideoRaster::SMPTE274_25I; pixel_format = Ingex::PixelFormat::YUV_PLANAR_422; --- 99,103 ---- else if (strcmp(argv[n+1], "DNX36p") == 0) { ! res_enum = MaterialResolution::DNX36P_MXF_ATOM; raster = VideoRaster::SMPTE274_25I; pixel_format = Ingex::PixelFormat::YUV_PLANAR_422; *************** *** 105,109 **** else if (strcmp(argv[n+1], "DNX120p") == 0) { ! res = MaterialResolution::DNX120P_MXF_ATOM; raster = VideoRaster::SMPTE274_25I; pixel_format = Ingex::PixelFormat::YUV_PLANAR_422; --- 105,109 ---- else if (strcmp(argv[n+1], "DNX120p") == 0) { ! res_enum = MaterialResolution::DNX120P_MXF_ATOM; raster = VideoRaster::SMPTE274_25I; pixel_format = Ingex::PixelFormat::YUV_PLANAR_422; *************** *** 111,115 **** else if (strcmp(argv[n+1], "DNX185p") == 0) { ! res = MaterialResolution::DNX185P_MXF_ATOM; raster = VideoRaster::SMPTE274_25I; pixel_format = Ingex::PixelFormat::YUV_PLANAR_422; --- 111,115 ---- else if (strcmp(argv[n+1], "DNX185p") == 0) { ! res_enum = MaterialResolution::DNX185P_MXF_ATOM; raster = VideoRaster::SMPTE274_25I; pixel_format = Ingex::PixelFormat::YUV_PLANAR_422; *************** *** 117,121 **** else if (strcmp(argv[n+1], "DNX120i") == 0) { ! res = MaterialResolution::DNX120I_MXF_ATOM; raster = VideoRaster::SMPTE274_25I; pixel_format = Ingex::PixelFormat::YUV_PLANAR_422; --- 117,121 ---- else if (strcmp(argv[n+1], "DNX120i") == 0) { ! res_enum = MaterialResolution::DNX120I_MXF_ATOM; raster = VideoRaster::SMPTE274_25I; pixel_format = Ingex::PixelFormat::YUV_PLANAR_422; *************** *** 123,127 **** else if (strcmp(argv[n+1], "DNX185i") == 0) { ! res = MaterialResolution::DNX185I_MXF_ATOM; raster = VideoRaster::SMPTE274_25I; pixel_format = Ingex::PixelFormat::YUV_PLANAR_422; --- 123,127 ---- else if (strcmp(argv[n+1], "DNX185i") == 0) { ! res_enum = MaterialResolution::DNX185I_MXF_ATOM; raster = VideoRaster::SMPTE274_25I; pixel_format = Ingex::PixelFormat::YUV_PLANAR_422; *************** *** 129,133 **** else if (strcmp(argv[n+1], "DV100_1080i50") == 0) { ! res = MaterialResolution::DV100_MXF_ATOM; raster = VideoRaster::SMPTE274_25I; pixel_format = Ingex::PixelFormat::YUV_PLANAR_422; --- 129,133 ---- else if (strcmp(argv[n+1], "DV100_1080i50") == 0) { ! res_enum = MaterialResolution::DV100_MXF_ATOM; raster = VideoRaster::SMPTE274_25I; pixel_format = Ingex::PixelFormat::YUV_PLANAR_422; *************** *** 135,139 **** else if (strcmp(argv[n+1], "DV100_720p50") == 0) { ! res = MaterialResolution::DV100_MXF_ATOM; raster = VideoRaster::SMPTE296_50P; pixel_format = Ingex::PixelFormat::YUV_PLANAR_422; --- 135,139 ---- else if (strcmp(argv[n+1], "DV100_720p50") == 0) { ! res_enum = MaterialResolution::DV100_MXF_ATOM; raster = VideoRaster::SMPTE296_50P; pixel_format = Ingex::PixelFormat::YUV_PLANAR_422; *************** *** 141,145 **** else if (strcmp(argv[n+1], "XDCAMHD") == 0) { ! res = MaterialResolution::XDCAMHD422_RAW; raster = VideoRaster::SMPTE274_25I; pixel_format = Ingex::PixelFormat::YUV_PLANAR_422; --- 141,145 ---- else if (strcmp(argv[n+1], "XDCAMHD") == 0) { ! res_enum = MaterialResolution::XDCAMHD422_RAW; raster = VideoRaster::SMPTE274_25I; pixel_format = Ingex::PixelFormat::YUV_PLANAR_422; *************** *** 166,181 **** } ! if (res == MaterialResolution::NONE) { return usage(argv); } // Get raster parameters ! int width; ! int height; ! int fps_num; ! int fps_den; ! Interlace::EnumType interlace; ! VideoRaster::GetInfo(raster, width, height, fps_num, fps_den, interlace); if (! ffmpeg_encoder_check_available(res, raster)) --- 166,180 ---- } ! if (res_enum == MaterialResolution::NONE) { return usage(argv); } + // Set material resolution + MaterialResolution res(res_enum); + // Get raster parameters ! int width = raster.Width(); ! int height = raster.Height(); if (! ffmpeg_encoder_check_available(res, raster)) *************** *** 201,206 **** } ! int unc_frame_size = width*height*2; ! switch (res) { case MaterialResolution::DV25_RAW: --- 200,205 ---- } ! int unc_frame_size; ! switch (res.EnumValue()) { case MaterialResolution::DV25_RAW: Index: ffmpeg_encoder_av.cpp =================================================================== RCS file: /cvsroot/ingex/ingex/studio/common/ffmpeg_encoder_av.cpp,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** ffmpeg_encoder_av.cpp 22 Nov 2012 14:29:48 -0000 1.27 --- ffmpeg_encoder_av.cpp 6 Jun 2013 13:36:21 -0000 1.28 *************** *** 322,326 **** extern ffmpeg_encoder_av_t * ffmpeg_encoder_av_init (const char * filename, ! MaterialResolution::EnumType res, VideoRaster::EnumType raster, Ingex::PixelFormat::EnumType pixel_format, int64_t start_tc, int num_threads, unsigned int num_audio_streams, unsigned int num_audio_channels_per_stream) --- 322,326 ---- extern ffmpeg_encoder_av_t * ffmpeg_encoder_av_init (const char * filename, ! MaterialResolution::EnumType res, VideoRaster raster, Ingex::PixelFormat::EnumType pixel_format, int64_t start_tc, int num_threads, unsigned int num_audio_streams, unsigned int num_audio_channels_per_stream) *************** *** 441,450 **** } ! int width; ! int height; ! int fps_num; ! int fps_den; ! Interlace::EnumType interlace; ! VideoRaster::GetInfo(raster, width, height, fps_num, fps_den, interlace); --- 441,446 ---- } ! Ingex::Rational rate = raster.Rate(); ! Interlace::EnumType interlace = raster.InterlaceEnumValue(); *************** *** 459,469 **** /* Set sample aspect for stream */ ! Rational sar = VideoRaster::SampleAspectRatio(raster); enc->video_st->sample_aspect_ratio.num = sar.numerator; enc->video_st->sample_aspect_ratio.den = sar.denominator; /* Set frame rate */ ! enc->video_st->r_frame_rate.num = fps_num; ! enc->video_st->r_frame_rate.den = fps_den; --- 455,465 ---- /* Set sample aspect for stream */ ! Rational sar = raster.SampleAspectRatio(); enc->video_st->sample_aspect_ratio.num = sar.numerator; enc->video_st->sample_aspect_ratio.den = sar.denominator; /* Set frame rate */ ! enc->video_st->r_frame_rate.num = rate.numerator; ! enc->video_st->r_frame_rate.den = rate.denominator; Index: ffmpeg_setup_codec.h =================================================================== RCS file: /cvsroot/ingex/ingex/studio/common/ffmpeg_setup_codec.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** ffmpeg_setup_codec.h 22 Nov 2012 14:29:48 -0000 1.2 --- ffmpeg_setup_codec.h 6 Jun 2013 13:36:21 -0000 1.3 *************** *** 61,66 **** } // namespace ! void ffmpeg_setup_video_codec(Ingex::MaterialResolution::EnumType res, Ingex::VideoRaster::EnumType raster, Ingex::PixelFormat::EnumType pixel_format, int threads, AVCodecContext * codec_context, Ingex::MiscImageParams & image_params, size_t & video_outbuf_size); ! void ffmpeg_setup_audio_codec(Ingex::MaterialResolution::EnumType res, AVCodecContext * codec_context, size_t & audio_outbuf_size); #if 0 --- 61,66 ---- } // namespace ! void ffmpeg_setup_video_codec(const Ingex::MaterialResolution & res, const Ingex::VideoRaster & raster, Ingex::PixelFormat::EnumType pixel_format, int threads, AVCodecContext * codec_context, Ingex::MiscImageParams & image_params, size_t & video_outbuf_size); ! void ffmpeg_setup_audio_codec(const Ingex::MaterialResolution & res, AVCodecContext * codec_context, size_t & audio_outbuf_size); #if 0 Index: ffmpeg_encoder.cpp =================================================================== RCS file: /cvsroot/ingex/ingex/studio/common/ffmpeg_encoder.cpp,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** ffmpeg_encoder.cpp 22 Nov 2012 14:29:48 -0000 1.16 --- ffmpeg_encoder.cpp 6 Jun 2013 13:36:21 -0000 1.17 *************** *** 139,148 **** } // namespace ! extern bool ffmpeg_encoder_check_available(MaterialResolution::EnumType res, VideoRaster::EnumType raster) { enum CodecID codec_id; enum CodecType codec_type; ::PixelFormat pix_fmt; ! get_ffmpeg_params(res, raster, codec_id, codec_type, pix_fmt); av_register_all(); --- 139,148 ---- } // namespace ! extern bool ffmpeg_encoder_check_available(const MaterialResolution & res, const VideoRaster & raster) { enum CodecID codec_id; enum CodecType codec_type; ::PixelFormat pix_fmt; ! get_ffmpeg_params(res.EnumValue(), raster.EnumValue(), codec_id, codec_type, pix_fmt); av_register_all(); *************** *** 155,160 **** } ! extern ffmpeg_encoder_t * ffmpeg_encoder_init(MaterialResolution::EnumType res, VideoRaster::EnumType raster, Ingex::PixelFormat::EnumType pixel_format, int num_threads) { internal_ffmpeg_encoder_t * encoder; --- 155,165 ---- } ! extern ffmpeg_encoder_t * ffmpeg_encoder_init(const MaterialResolution & res, const VideoRaster & raster, Ingex::PixelFormat::EnumType pixel_format, int num_threads) { + if (0) + { + fprintf(stderr, "ffmpeg_encoder_init %s %s\n", res.Name().c_str(), raster.Name().c_str()); + } + internal_ffmpeg_encoder_t * encoder; *************** *** 170,187 **** av_register_all(); - // Get video raster parameters - int width; - int height; - int fps_num; - int fps_den; - Interlace::EnumType interlace; - VideoRaster::GetInfo(raster, width, height, fps_num, fps_den, interlace); - //fprintf(stderr, "width = %d, height = %d\n", width, height); - // Set some parameters in encoder object ! encoder->image_params.input_width = width; ! encoder->image_params.input_height = height; ! encoder->image_params.output_width = width; ! encoder->image_params.output_height = height; // Allocate input video frame --- 175,183 ---- av_register_all(); // Set some parameters in encoder object ! encoder->image_params.input_width = raster.Width(); ! encoder->image_params.input_height = raster.Height(); ! encoder->image_params.output_width = raster.Width(); ! encoder->image_params.output_height = raster.Height(); // Allocate input video frame *************** *** 194,198 **** // Set interlace parameters ! switch (interlace) { case Interlace::TOP_FIELD_FIRST: --- 190,194 ---- // Set interlace parameters ! switch (raster.InterlaceEnumValue()) { case Interlace::TOP_FIELD_FIRST: *************** *** 221,225 **** #if 1 // New version using ffmpeg_setup_codec ! switch (res) { case MaterialResolution::MP3: --- 217,221 ---- #if 1 // New version using ffmpeg_setup_codec ! switch (res.EnumValue()) { case MaterialResolution::MP3: *************** *** 296,301 **** { encoder->codec_context->pix_fmt = pix_fmt; ! encoder->codec_context->time_base.num = fps_den; ! encoder->codec_context->time_base.den = fps_num; // Set interlace parameters --- 292,297 ---- { encoder->codec_context->pix_fmt = pix_fmt; ! encoder->codec_context->time_base.num = rate.denominator; ! encoder->codec_context->time_base.den = rate.numerator; // Set interlace parameters |