Hi 2 all.

I creating my DirectShow filter for input video stream compresing. After 
receive data to input pin I probaly convert UYVY422 data to YUV420P, but 
sws_scale crashed with Access violation bag.

Getting data from input pin:
[code]
        IMediaSample *sample
                = *((DirectShowParamter *)(ctx->priv_data))->sample_;
         ASSERT(sample);

        int64_t curtime = av_gettime();

        if (av_new_packet(pkt, sample->GetActualDataLength())<0)
                return AVERROR_IO;

        pkt->pts = curtime;
        BYTE *dataPtr;
        sample->GetPointer(&dataPtr);
        // TODO попробовать не использовать копирование.
        memcpy(pkt->data, dataPtr, sample->GetActualDataLength());
        //pkt->data = dataPtr;
        return sample->GetActualDataLength();
[/code]

Getting context

[code]
                        swsCtx_ = sws_getContext(384, 272, PIX_FMT_UYVY422
                                , 384, 272, PIX_FMT_RGB24, SWS_BICUBIC, 0, 0, 
0); [/code]

Scaling

[code]

                sws_scale(swsCtx_, ((Codecs::FFMPEGFrame 
*)pkt)->FF()->data
                        , ((Codecs::FFMPEGFrame *)pkt)->FF()->linesize
                        , 0, 272, opkt.FF()->data, opkt.FF()->linesize);
[/code]

-- реклама -----------------------------------------------------------
Поторопись зарегистрировать самый короткий почтовый адрес @i.ua
http://mail.i.ua/reg - и получи 1Gb для хранения писем
_______________________________________________
libav-user mailing list
[email protected]
https://lists.mplayerhq.hu/mailman/listinfo/libav-user

Reply via email to