[SCM] libav/experimental: Use the new avcodec_decode_* API.

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 16:43:40 UTC 2013


The following commit has been merged in the experimental branch:
commit bea183757b05ef56afb3f5f98e43e0ac60c7d7a4
Author: Thilo Borgmann <thilo.borgmann at googlemail.com>
Date:   Fri Apr 10 12:07:06 2009 +0000

    Use the new avcodec_decode_* API.
    
    Patch by Thilo Borgmann thilo.borgmann * googlemail ! com.
    
    Originally committed as revision 18414 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/ffplay.c b/ffplay.c
index 18422e2..fb05386 100644
--- a/ffplay.c
+++ b/ffplay.c
@@ -135,9 +135,8 @@ typedef struct VideoState {
     uint8_t *audio_buf;
     unsigned int audio_buf_size; /* in bytes */
     int audio_buf_index; /* in bytes */
+    AVPacket audio_pkt_temp;
     AVPacket audio_pkt;
-    uint8_t *audio_pkt_data;
-    int audio_pkt_size;
     enum SampleFormat audio_src_fmt;
     AVAudioConvert *reformat_ctx;
 
@@ -1372,9 +1371,9 @@ static int video_thread(void *arg)
         /* NOTE: ipts is the PTS of the _first_ picture beginning in
            this packet, if any */
         is->video_st->codec->reordered_opaque= pkt->pts;
-        len1 = avcodec_decode_video(is->video_st->codec,
+        len1 = avcodec_decode_video2(is->video_st->codec,
                                     frame, &got_picture,
-                                    pkt->data, pkt->size);
+                                    pkt);
 
         if(   (decoder_reorder_pts || pkt->dts == AV_NOPTS_VALUE)
            && frame->reordered_opaque != AV_NOPTS_VALUE)
@@ -1440,9 +1439,9 @@ static int subtitle_thread(void *arg)
         if (pkt->pts != AV_NOPTS_VALUE)
             pts = av_q2d(is->subtitle_st->time_base)*pkt->pts;
 
-        len1 = avcodec_decode_subtitle(is->subtitle_st->codec,
+        len1 = avcodec_decode_subtitle2(is->subtitle_st->codec,
                                     &sp->sub, &got_subtitle,
-                                    pkt->data, pkt->size);
+                                    pkt);
 //            if (len1 < 0)
 //                break;
         if (got_subtitle && sp->sub.format == 0) {
@@ -1577,6 +1576,7 @@ static int synchronize_audio(VideoState *is, short *samples,
 /* decode one audio frame and returns its uncompressed size */
 static int audio_decode_frame(VideoState *is, double *pts_ptr)
 {
+    AVPacket *pkt_temp = &is->audio_pkt_temp;
     AVPacket *pkt = &is->audio_pkt;
     AVCodecContext *dec= is->audio_st->codec;
     int n, len1, data_size;
@@ -1584,19 +1584,19 @@ static int audio_decode_frame(VideoState *is, double *pts_ptr)
 
     for(;;) {
         /* NOTE: the audio packet can contain several frames */
-        while (is->audio_pkt_size > 0) {
+        while (pkt_temp->size > 0) {
             data_size = sizeof(is->audio_buf1);
-            len1 = avcodec_decode_audio2(dec,
+            len1 = avcodec_decode_audio3(dec,
                                         (int16_t *)is->audio_buf1, &data_size,
-                                        is->audio_pkt_data, is->audio_pkt_size);
+                                        pkt_temp);
             if (len1 < 0) {
                 /* if error, we skip the frame */
-                is->audio_pkt_size = 0;
+                pkt_temp->size = 0;
                 break;
             }
 
-            is->audio_pkt_data += len1;
-            is->audio_pkt_size -= len1;
+            pkt_temp->data += len1;
+            pkt_temp->size -= len1;
             if (data_size <= 0)
                 continue;
 
@@ -1666,8 +1666,8 @@ static int audio_decode_frame(VideoState *is, double *pts_ptr)
             continue;
         }
 
-        is->audio_pkt_data = pkt->data;
-        is->audio_pkt_size = pkt->size;
+        pkt_temp->data = pkt->data;
+        pkt_temp->size = pkt->size;
 
         /* if update the audio clock with the pts */
         if (pkt->pts != AV_NOPTS_VALUE) {

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list