[xiph-commits] r17967 - trunk/ffmpeg2theora/src

j at svn.xiph.org j at svn.xiph.org
Fri May 6 05:43:23 PDT 2011


Author: j
Date: 2011-05-06 05:43:23 -0700 (Fri, 06 May 2011)
New Revision: 17967

Modified:
   trunk/ffmpeg2theora/src/avinfo.c
   trunk/ffmpeg2theora/src/ffmpeg2theora.c
Log:
update to work with current ffmpeg api

Modified: trunk/ffmpeg2theora/src/avinfo.c
===================================================================
--- trunk/ffmpeg2theora/src/avinfo.c	2011-05-06 06:23:41 UTC (rev 17966)
+++ trunk/ffmpeg2theora/src/avinfo.c	2011-05-06 12:43:23 UTC (rev 17967)
@@ -196,7 +196,7 @@
     }
 
     switch(enc->codec_type) {
-    case CODEC_TYPE_VIDEO:
+    case AVMEDIA_TYPE_VIDEO:
         codec_name = fix_codec_name(codec_name);
         json_add_key_value(output, "codec", (void *)codec_name, JSON_STRING, 0, indent);
         if (enc->pix_fmt != PIX_FMT_NONE) {
@@ -224,7 +224,7 @@
             json_add_key_value(output, "bitrate", &t, JSON_FLOAT, 0, indent);
         }
         break;
-    case CODEC_TYPE_AUDIO:
+    case AVMEDIA_TYPE_AUDIO:
         codec_name = fix_codec_name(codec_name);
         json_add_key_value(output, "codec", (void *)codec_name, JSON_STRING, 0, indent);
         if (enc->sample_rate) {
@@ -277,15 +277,15 @@
         }
         break;
     /*
-    case CODEC_TYPE_DATA:
+    case AVMEDIA_TYPE_DATA:
         fprintf(output, "datacodec: %s\n", codec_name);
         bitrate = enc->bit_rate;
         break;
-    case CODEC_TYPE_SUBTITLE:
+    case AVMEDIA_TYPE_SUBTITLE:
         fprintf(output, "subtitle: %s\n", codec_name);
         bitrate = enc->bit_rate;
         break;
-    case CODEC_TYPE_ATTACHMENT:
+    case AVMEDIA_TYPE_ATTACHMENT:
         fprintf(output, "attachment: : %s\n", codec_name);
         bitrate = enc->bit_rate;
         break;
@@ -316,7 +316,7 @@
         fprintf(output, "{\n");
 
         json_codec_info(output, st->codec, indent + 1);
-        if(st->codec->codec_type == CODEC_TYPE_VIDEO){
+        if(st->codec->codec_type == AVMEDIA_TYPE_VIDEO){
             if (st->time_base.den && st->time_base.num && av_q2d(st->time_base) > 0.001) {
                 snprintf(buf1, sizeof(buf1), "%d:%d",
                          st->time_base.den, st->time_base.num);
@@ -326,6 +326,20 @@
                          st->r_frame_rate.num, st->r_frame_rate.den);
                 json_add_key_value(output, "framerate", buf1, JSON_STRING, 0, indent + 1);
             }
+            if (st->sample_aspect_ratio.num && // default
+                av_cmp_q(st->sample_aspect_ratio, st->codec->sample_aspect_ratio)) {
+                AVRational display_aspect_ratio;
+                av_reduce(&display_aspect_ratio.num, &display_aspect_ratio.den,
+                          st->codec->width*st->sample_aspect_ratio.num,
+                          st->codec->height*st->sample_aspect_ratio.den,
+                          1024*1024);
+                snprintf(buf1, sizeof(buf1), "%d:%d",
+                         st->sample_aspect_ratio.num, st->sample_aspect_ratio.den);
+                json_add_key_value(output, "pixel_aspect_ratio", buf1, JSON_STRING, 0, indent+1);
+                snprintf(buf1, sizeof(buf1), "%d:%d",
+                         display_aspect_ratio.num, display_aspect_ratio.den);
+                json_add_key_value(output, "display_aspect_ratio", buf1, JSON_STRING, 0, indent+1);
+            }
         }
         json_add_key_value(output, "id", &i, JSON_INT, 1, indent + 1);
         do_indent(output, indent-1);
@@ -470,11 +484,11 @@
             int j, k;
             for(j=0; j<ic->nb_programs; j++) {
                 for(k=0; k<ic->programs[j]->nb_stream_indexes; k++)
-                    json_stream_format(output, ic, ic->programs[j]->stream_index[k], 2, !k && !j, CODEC_TYPE_VIDEO);
+                    json_stream_format(output, ic, ic->programs[j]->stream_index[k], 2, !k && !j, AVMEDIA_TYPE_VIDEO);
              }
         } else {
             for(i=0;i<ic->nb_streams;i++) {
-                json_stream_format(output, ic, i, 2, !i, CODEC_TYPE_VIDEO);
+                json_stream_format(output, ic, i, 2, !i, AVMEDIA_TYPE_VIDEO);
             }
         }
         fprintf(output, "],\n");
@@ -485,11 +499,11 @@
             int j, k;
             for(j=0; j<ic->nb_programs; j++) {
                 for(k=0; k<ic->programs[j]->nb_stream_indexes; k++)
-                    json_stream_format(output, ic, ic->programs[j]->stream_index[k], 2, !k && !j, CODEC_TYPE_AUDIO);
+                    json_stream_format(output, ic, ic->programs[j]->stream_index[k], 2, !k && !j, AVMEDIA_TYPE_AUDIO);
              }
         } else {
             for(i=0;i<ic->nb_streams;i++) {
-                json_stream_format(output, ic, i, 2, !i, CODEC_TYPE_AUDIO);
+                json_stream_format(output, ic, i, 2, !i, AVMEDIA_TYPE_AUDIO);
             }
         }
         fprintf(output, "],\n");

Modified: trunk/ffmpeg2theora/src/ffmpeg2theora.c
===================================================================
--- trunk/ffmpeg2theora/src/ffmpeg2theora.c	2011-05-06 06:23:41 UTC (rev 17966)
+++ trunk/ffmpeg2theora/src/ffmpeg2theora.c	2011-05-06 12:43:23 UTC (rev 17967)
@@ -344,7 +344,7 @@
 static const char *find_category_for_subtitle_stream (ff2theora this, int idx, int included_subtitles)
 {
   AVCodecContext *enc = this->context->streams[idx]->codec;
-  if (enc->codec_type != CODEC_TYPE_SUBTITLE) return 0;
+  if (enc->codec_type != AVMEDIA_TYPE_SUBTITLE) return 0;
   switch (enc->codec_id) {
     case CODEC_ID_TEXT:
     case CODEC_ID_SSA:
@@ -503,9 +503,11 @@
 
 static const char *find_language_for_subtitle_stream(const AVStream *s)
 {
-  const char *lang=find_iso639_1(s->language);
+  AVMetadataTag *language = av_metadata_get(s->metadata, "language", NULL, 0);
+  const char *lang=find_iso639_1(language->value);
   if (!lang) {
-    fprintf(stderr,"WARNING - unrecognized ISO 639-2 language code: %s\n",s->language);
+    fprintf(stderr, "WARNING - unrecognized ISO 639-2 language code: %s\n",
+                    language->value);
   }
   return lang;
 }
@@ -533,7 +535,7 @@
 
     if (this->audiostream >= 0 && this->context->nb_streams > this->audiostream) {
         AVCodecContext *enc = this->context->streams[this->audiostream]->codec;
-        if (enc->codec_type == CODEC_TYPE_AUDIO) {
+        if (enc->codec_type == AVMEDIA_TYPE_AUDIO) {
             this->audio_index = this->audiostream;
             fprintf(stderr, "  Using stream #0.%d as audio input\n",this->audio_index);
         }
@@ -543,7 +545,7 @@
     }
     if (this->videostream >= 0 && this->context->nb_streams > this->videostream) {
         AVCodecContext *enc = this->context->streams[this->videostream]->codec;
-        if (enc->codec_type == CODEC_TYPE_VIDEO) {
+        if (enc->codec_type == AVMEDIA_TYPE_VIDEO) {
             this->video_index = this->videostream;
             fprintf(stderr, "  Using stream #0.%d as video input\n",this->video_index);
         }
@@ -555,11 +557,11 @@
     for (i = 0; i < this->context->nb_streams; i++) {
         AVCodecContext *enc = this->context->streams[i]->codec;
         switch (enc->codec_type) {
-            case CODEC_TYPE_VIDEO:
+            case AVMEDIA_TYPE_VIDEO:
                 if (this->video_index < 0 && !this->disable_video)
                     this->video_index = i;
                 break;
-            case CODEC_TYPE_AUDIO:
+            case AVMEDIA_TYPE_AUDIO:
                 if (this->audio_index < 0 && !this->disable_audio)
                     this->audio_index = i;
                 break;
@@ -981,7 +983,7 @@
           AVStream *stream = this->context->streams[i];
           AVCodecContext *enc = stream->codec;
           const char *category;
-          if (enc->codec_type == CODEC_TYPE_SUBTITLE) {
+          if (enc->codec_type == AVMEDIA_TYPE_SUBTITLE) {
             AVCodec *codec = avcodec_find_decoder (enc->codec_id);
             if (codec && avcodec_open (enc, codec) >= 0) {
               subtitles_opened[i] = 1;
@@ -1456,9 +1458,11 @@
                             }
                             if (this->sws_scale_ctx) {
                                 sws_scale(this->sws_scale_ctx,
-                                output_cropped->data, output_cropped->linesize, 0,
-                                display_height - (this->frame_topBand + this->frame_bottomBand),
-                                output_resized->data, output_resized->linesize);
+                                    output_cropped->data,
+                                    output_cropped->linesize, 0,
+                                    display_height - (this->frame_topBand + this->frame_bottomBand),
+                                    output_resized->data,
+                                    output_resized->linesize);
                             }
                             else{
                                 output_resized = output_cropped;
@@ -1517,7 +1521,7 @@
                     int samples=0;
                     int samples_out=0;
                     int data_size = 4*AVCODEC_MAX_AUDIO_FRAME_SIZE;
-                    int bytes_per_sample = av_get_bits_per_sample_format(aenc->sample_fmt)/8;
+                    int bytes_per_sample = av_get_bits_per_sample_fmt(aenc->sample_fmt)/8;
 
                     if (avpkt.size > 0) {
                         len1 = avcodec_decode_audio3(astream->codec, audio_buf, &data_size, &avpkt);
@@ -2791,8 +2795,7 @@
 
     for(info.passno=(info.twopass==3?1:info.twopass);info.passno<=(info.twopass==3?2:info.twopass);info.passno++){
     //detect image sequences and set framerate if provided
-    if (av_guess_image2_codec(inputfile_name) != CODEC_ID_NONE || \
-        (input_fmt != NULL && strcmp(input_fmt->name, "video4linux") >= 0)) {
+    if (input_fmt != NULL && strcmp(input_fmt->name, "video4linux") >= 0) {
         formatParams = &params;
         memset(formatParams, 0, sizeof(*formatParams));
         if (input_fmt != NULL && strcmp(input_fmt->name, "video4linux") >= 0) {
@@ -2813,7 +2816,6 @@
             formatParams->time_base.den = convert->framerate_new.num;
             formatParams->time_base.num = convert->framerate_new.den;
         }
-        formatParams->video_codec_id = av_guess_image2_codec(inputfile_name);
     }
     if (av_open_input_file(&convert->context, inputfile_name, input_fmt, 0, formatParams) >= 0) {
         if (av_find_stream_info(convert->context) >= 0) {
@@ -2825,9 +2827,9 @@
                     for (i = 0; i < convert->context->nb_streams; i++) {
                         AVCodecContext *enc = convert->context->streams[i]->codec;
                         switch (enc->codec_type) {
-                            case CODEC_TYPE_VIDEO: has_video = 1; break;
-                            case CODEC_TYPE_AUDIO: has_audio = 1; break;
-                            case CODEC_TYPE_SUBTITLE: if (is_supported_subtitle_stream(convert, i, convert->included_subtitles)) has_kate = 1; break;
+                            case AVMEDIA_TYPE_VIDEO: has_video = 1; break;
+                            case AVMEDIA_TYPE_AUDIO: has_audio = 1; break;
+                            case AVMEDIA_TYPE_SUBTITLE: if (is_supported_subtitle_stream(convert, i, convert->included_subtitles)) has_kate = 1; break;
                             default: break;
                         }
                     }
@@ -2893,7 +2895,7 @@
 
                 if (!info.frontend) {
                     if (info.twopass!=3 || info.passno==1) {
-                        dump_format(convert->context, 0,inputfile_name, 0);
+                        av_dump_format(convert->context, 0,inputfile_name, 0);
                     }
                 }
                 if (convert->disable_audio) {



More information about the commits mailing list