return res;
}
+static AVPacket *
+gst_avpacket_new (guint8 * data, guint size)
+{
+ AVPacket *res;
+
+ res = g_malloc0 (sizeof (AVPacket));
+ res->data = data;
+ res->size = size;
+
+ return res;
+}
+
/* gst_ffmpegdec_[video|audio]_frame:
* ffmpegdec:
* data: pointer to the data to decode
GstClockTime out_timestamp, out_duration, out_pts;
gint64 out_offset;
const GstTSInfo *out_info;
+ AVPacket *packet;
*ret = GST_FLOW_OK;
*outbuf = NULL;
GST_DEBUG_OBJECT (ffmpegdec, "stored opaque values idx %d", dec_info->idx);
/* now decode the frame */
- len = avcodec_decode_video (ffmpegdec->context,
- ffmpegdec->picture, &have_data, data, size);
+ packet = gst_avpacket_new (data, size);
+ len = avcodec_decode_video2 (ffmpegdec->context,
+ ffmpegdec->picture, &have_data, packet);
/* restore previous state */
if (!decode)
gint have_data = AVCODEC_MAX_AUDIO_FRAME_SIZE;
GstClockTime out_timestamp, out_duration;
gint64 out_offset;
+ AVPacket *packet;
GST_DEBUG_OBJECT (ffmpegdec,
"size:%d, offset:%" G_GINT64_FORMAT ", ts:%" GST_TIME_FORMAT ", dur:%"
new_aligned_buffer (AVCODEC_MAX_AUDIO_FRAME_SIZE,
GST_PAD_CAPS (ffmpegdec->srcpad));
- len = avcodec_decode_audio2 (ffmpegdec->context,
- (int16_t *) GST_BUFFER_DATA (*outbuf), &have_data, data, size);
+ packet = gst_avpacket_new (data, size);
+ len = avcodec_decode_audio3 (ffmpegdec->context,
+ (int16_t *) GST_BUFFER_DATA (*outbuf), &have_data, packet);
GST_DEBUG_OBJECT (ffmpegdec,
"Decode audio: len=%d, have_data=%d", len, have_data);