On 16/11/2010 12:48, Tomas Härdin wrote:
On Tue, 2010-11-16 at 12:41 +0000, Mark Kenna wrote:
On 16/11/2010 12:34, Tomas Härdin wrote:
On Tue, 2010-11-16 at 12:28 +0000, Mark Kenna wrote:
On 16/11/2010 12:24, sq.cheng wrote:
use the video decode to do it
just like decoding mpeg4 or h.264, with the JPEG codec id(I don't remember
what's name, something like MJPEG)
then decode one frame, it will output one yuv frame,
and it seems I once met the output is yuyv, according to the input image.


On Tue, Nov 16, 2010 at 8:11 PM, Mark Kenna<
[email protected]>    wrote:

Hi Guys

Does anyone know if it's possible to convert a JPEG to YUV frame simply
using LibAv*? Currently I am converting to a Bitmap and converting the RGB
data to a YUV frame using sws. If there is a simpler (and more efficient)
method I would love to know about it.

Thanks,
Mark.

_______________________________________________
libav-user mailing list
[email protected]
https://lists.mplayerhq.hu/mailman/listinfo/libav-user

_______________________________________________
libav-user mailing list
[email protected]
https://lists.mplayerhq.hu/mailman/listinfo/libav-useriewsystems.com/support
Interesting - I will give it a try. If someone could specify the exact
codec to use I would appreciate it.

Thanks,
Mark.
Use the mjpeg decoder (CODEC_ID_MJPEG). It should work fine.

Also, since jpeg supports a number of YUV formats you might want to make
sure your input is in the format you want. Otherwise you will have to
use libswscale anyway. It's probably quite a bit faster converting YUV
->   YUV than RGB ->   YUV though.

/Tomas


_______________________________________________
libav-user mailing list
[email protected]
https://lists.mplayerhq.hu/mailman/listinfo/libav-user
How exactly would one check the input format first? I would write it
like so:

    1. Check input format, if YUV then just decode
    2. If input format != YUV, decode and then scale it to YUV
    3. Handle YUV

Does that sound about right?

Thanks,
Mark.
Sort of. I assume you want normal YUV 4:2:0, aka PIX_FMT_YUV420P.
Inspect AVCodecContext::pix_fmt to figure out whether you need to use
libswscale or not. So:

if(avctx->pix_fmt != PIX_FMT_YUV420P) {
     //setup libswscale to convert avctx->pix_fmt to PIX_FMT_YUV420P
}

Then later you just convert the output from the decoder if you need to,
like for instance ffplay and libavformat/output-example.c do.

/Tomas


_______________________________________________
libav-user mailing list
[email protected]
https://lists.mplayerhq.hu/mailman/listinfo/libav-user
Understood. One thing that may cause an issue is that I will not be using open_input_file on the JPEG, I will just have a byte buffer containing the image. So, I would have to decode the image and then check the pix format - shouldn't be a problem so long as I allocate a buffer large enough to hold any decoded frame right?

Cheers,
Mark.
_______________________________________________
libav-user mailing list
[email protected]
https://lists.mplayerhq.hu/mailman/listinfo/libav-user

Reply via email to