On Sun, Oct 19, 2014 at 08:35:08PM +0200, Benoit Fouet wrote: > Hi, > > On 19 October 2014 14:52:17 CEST, Michael Niedermayer <michae...@gmx.at> > wrote: > >Based on ConvertToPlanar() from libutvideo > >libutvideo sadly does not seem to support exporting its internal planar > >buffers > > > >Signed-off-by: Michael Niedermayer <michae...@gmx.at> > >--- > >libavcodec/libutvideodec.cpp | 55 > >+++++++++++++++++++++++++++++++++++++++++- > > 1 file changed, 54 insertions(+), 1 deletion(-) > > > >diff --git a/libavcodec/libutvideodec.cpp > >b/libavcodec/libutvideodec.cpp > >index 36dc952..f76a53a 100644 > >--- a/libavcodec/libutvideodec.cpp > >+++ b/libavcodec/libutvideodec.cpp > > [...] > > >@@ -88,6 +94,8 @@ static av_cold int utvideo_decode_init(AVCodecContext > >*avctx) > > > > /* Only allocate the buffer once */ > >utv->buf_size = avpicture_get_size(avctx->pix_fmt, avctx->width, > >avctx->height); > >+ if (format == UTVF_v210) > >+ utv->buf_size += avctx->height * ((avctx->width + 47) / 48) * > >128; > > A comment on the rounding would be cool.
added > > > utv->buffer = (uint8_t *)av_malloc(utv->buf_size * sizeof(uint8_t)); > > > > if (utv->buffer == NULL) { > >@@ -155,6 +163,51 @@ static int utvideo_decode_frame(AVCodecContext > >*avctx, void *data, > > pic->linesize[0] = w * 2; > > pic->data[0] = utv->buffer; > > break; > >+ case AV_PIX_FMT_YUV422P10: { > >+ uint16_t *y, *u, *v; > >+ int i,j; > >+ int linesize = ((w + 47) / 48) * 128; > >+ > >+ pic->linesize[0] = w * 2; > >+ pic->linesize[1] = > >+ pic->linesize[2] = w; > >+ pic->data[0] = utv->buffer + linesize * h; > >+ pic->data[1] = pic->data[0] + h*pic->linesize[0]; > >+ pic->data[2] = pic->data[1] + h*pic->linesize[1]; > >+ y = (uint16_t*)pic->data[0]; > >+ u = (uint16_t*)pic->data[1]; > >+ v = (uint16_t*)pic->data[2]; > >+ for (j = 0; j < h; j++) { > >+ const uint8_t *in = utv->buffer + j * linesize; > >+ > >+ for (i = 0; i + 1 < w; i += 6, in += 4) { > >+ *u++ = (AV_RL32(in+0) ) & 0x3FF; > >+ *y++ = (AV_RL32(in+0)>>10) & 0x3FF; > >+ *v++ = (AV_RL32(in+0)>>20) & 0x3FF; > > Couldn't this be using a temp variable for AV_RL32 (here and below)? changed patch applied thx [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB The misfortune of the wise is better than the prosperity of the fool. -- Epicurus
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel