lavc/ffwavesynth: fix dependency sizeof(AVFrame).
authorNicolas George <george@nsup.org>
Sun, 29 Dec 2013 09:33:27 +0000 (10:33 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 7 Jan 2014 20:28:41 +0000 (21:28 +0100)
(cherry picked from commit bcfcb8b8524dfcc1c37d520ccf3fba3b3a4c104d)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/ffwavesynth.c

index a62746d..4a5031a 100644 (file)
@@ -93,7 +93,6 @@ struct wavesynth_context {
     int64_t cur_ts;
     int64_t next_ts;
     int32_t *sin;
-    AVFrame frame;
     struct ws_interval *inter;
     uint32_t dither_state;
     uint32_t pink_state;
@@ -341,8 +340,6 @@ static av_cold int wavesynth_init(AVCodecContext *avc)
         ws->pink_need += ws->inter[i].type == WS_NOISE;
     ws->pink_state = MKTAG('P','I','N','K');
     ws->pink_pos = PINK_UNIT;
-    avcodec_get_frame_defaults(&ws->frame);
-    avc->coded_frame = &ws->frame;
     wavesynth_seek(ws, 0);
     avc->sample_fmt = AV_SAMPLE_FMT_S16;
     return 0;
@@ -428,6 +425,7 @@ static int wavesynth_decode(AVCodecContext *avc, void *rframe, int *rgot_frame,
                             AVPacket *packet)
 {
     struct wavesynth_context *ws = avc->priv_data;
+    AVFrame *frame = rframe;
     int64_t ts;
     int duration;
     int s, c, r;
@@ -443,11 +441,11 @@ static int wavesynth_decode(AVCodecContext *avc, void *rframe, int *rgot_frame,
     duration = AV_RL32(packet->data + 8);
     if (duration <= 0)
         return AVERROR(EINVAL);
-    ws->frame.nb_samples = duration;
-    r = ff_get_buffer(avc, &ws->frame, 0);
+    frame->nb_samples = duration;
+    r = ff_get_buffer(avc, frame, 0);
     if (r < 0)
         return r;
-    pcm = (int16_t *)ws->frame.data[0];
+    pcm = (int16_t *)frame->data[0];
     for (s = 0; s < duration; s++, ts++) {
         memset(channels, 0, avc->channels * sizeof(*channels));
         if (ts >= ws->next_ts)
@@ -458,7 +456,6 @@ static int wavesynth_decode(AVCodecContext *avc, void *rframe, int *rgot_frame,
     }
     ws->cur_ts += duration;
     *rgot_frame = 1;
-    *(AVFrame *)rframe = ws->frame;
     return packet->size;
 }