diff --git a/lib/codeclib.c b/lib/codeclib.c index fbbefe949..0ade66d3b 100644 --- a/lib/codeclib.c +++ b/lib/codeclib.c @@ -5079,12 +5079,12 @@ codec_cc_state cc_run_async(codec_cc_t *c, const str *data, unsigned long ts, vo return cc_X_run_async(c, data, ts, async_cb_obj, __cc_run_async); } -static void cc_X_pkt_callback(codec_cc_t *c, int size, __typeof__(__cc_run_async) run_async) { +static void cc_X_pkt_callback(codec_cc_t *c, ssize_t size, __typeof__(__cc_run_async) run_async) { AVPacket *pkt = c->avpkt_async; void *async_cb_obj = c->async_cb_obj; c->async_cb_obj = NULL; - c->async_callback(pkt, async_cb_obj); + c->async_callback(size >= 0 ? pkt : NULL, async_cb_obj); pkt->size = 0; @@ -5124,13 +5124,13 @@ static void cc_X_pkt_callback(codec_cc_t *c, int size, __typeof__(__cc_run_async static void cc_run_callback(void *p, ssize_t size) { codec_cc_t *c = p; - assert(size > 0); // XXX handle errors XXX handle input frame sizes != 160 - AVPacket *pkt = c->avpkt_async; - pkt->size = size; - pkt->duration = c->data_len * 6L; // XXX - pkt->pts = c->ts * 6L; // XXX + if (size >= 0) { + pkt->size = size; + pkt->duration = c->data_len * 6L; // XXX + pkt->pts = c->ts * 6L; // XXX + } cc_X_pkt_callback(c, size, __cc_run_async); } diff --git a/perf-tester/main.c b/perf-tester/main.c index a6b0c8c6a..15efccf68 100644 --- a/perf-tester/main.c +++ b/perf-tester/main.c @@ -463,7 +463,7 @@ static void *async_init(void *x, void *y, void *z) { } static void async_finish(AVPacket *pkt, void *async_cb_obj) { struct stream *s = async_cb_obj; - { + if (pkt) { LOCK(&s->lock); got_packet_pkt(s, pkt); }