Browse Source

avisynth: More av_new_packet changes

These are the remaining av_packet-related bits from 9eac7c4
that didn't get merged at that time.

Changes authored by Anton Khirnov <anton@khirnov.net>, split out
from 9eac7c4 by Stephen Hutchinson <qyot27@gmail.com>

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
tags/n2.2-rc1
Anton Khirnov Michael Niedermayer 11 years ago
parent
commit
02dd178d9d
1 changed files with 6 additions and 9 deletions
  1. +6
    -9
      libavformat/avisynth.c

+ 6
- 9
libavformat/avisynth.c View File

@@ -459,17 +459,16 @@ static int avisynth_read_packet_video(AVFormatContext *s, AVPacket *pkt,
(int64_t)avs->vi->height) * bits) / 8; (int64_t)avs->vi->height) * bits) / 8;
if (!pkt->size) if (!pkt->size)
return AVERROR_UNKNOWN; return AVERROR_UNKNOWN;
if (av_new_packet(pkt, (int)pkt->size) < 0) {
av_free(pkt);
if (av_new_packet(pkt, pkt->size) < 0)
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
}


frame = avs_library.avs_get_frame(avs->clip, n); frame = avs_library.avs_get_frame(avs->clip, n);
error = avs_library.avs_clip_get_error(avs->clip); error = avs_library.avs_clip_get_error(avs->clip);
if (error) { if (error) {
av_log(s, AV_LOG_ERROR, "%s\n", error); av_log(s, AV_LOG_ERROR, "%s\n", error);
avs->error = 1; avs->error = 1;
av_freep(&pkt->data);
av_packet_unref(pkt);
return AVERROR_UNKNOWN; return AVERROR_UNKNOWN;
} }


@@ -558,8 +557,8 @@ static int avisynth_read_packet_audio(AVFormatContext *s, AVPacket *pkt,
samples * avs->vi->nchannels; samples * avs->vi->nchannels;
if (!pkt->size) if (!pkt->size)
return AVERROR_UNKNOWN; return AVERROR_UNKNOWN;
pkt->data = av_malloc(pkt->size);
if (!pkt->data)
if (av_new_packet(pkt, pkt->size) < 0)
return AVERROR(ENOMEM); return AVERROR(ENOMEM);


avs_library.avs_get_audio(avs->clip, pkt->data, n, samples); avs_library.avs_get_audio(avs->clip, pkt->data, n, samples);
@@ -567,7 +566,7 @@ static int avisynth_read_packet_audio(AVFormatContext *s, AVPacket *pkt,
if (error) { if (error) {
av_log(s, AV_LOG_ERROR, "%s\n", error); av_log(s, AV_LOG_ERROR, "%s\n", error);
avs->error = 1; avs->error = 1;
av_freep(&pkt->data);
av_packet_unref(pkt);
return AVERROR_UNKNOWN; return AVERROR_UNKNOWN;
} }
return 0; return 0;
@@ -600,8 +599,6 @@ static int avisynth_read_packet(AVFormatContext *s, AVPacket *pkt)
if (avs->error) if (avs->error)
return AVERROR_UNKNOWN; return AVERROR_UNKNOWN;


av_free_packet(pkt);

/* If either stream reaches EOF, try to read the other one before /* If either stream reaches EOF, try to read the other one before
* giving up. */ * giving up. */
avisynth_next_stream(s, &st, pkt, &discard); avisynth_next_stream(s, &st, pkt, &discard);


Loading…
Cancel
Save