mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-02-07 14:18:25 +00:00
update to lastest ffmpeg and fix a crash produced by changes in swscale processing.
git-svn-id: svn+ssh://svn.savannah.nongnu.org/linphone/trunk@421 3f6dc0c8-ddfe-455d-9043-3cd528dc4637
This commit is contained in:
parent
7b0fc55628
commit
8fdad6daa3
4 changed files with 18 additions and 3 deletions
|
|
@ -503,8 +503,12 @@ static void dec_process(MSFilter *f){
|
|||
while (end-p>0) {
|
||||
int len;
|
||||
int got_picture=0;
|
||||
AVPacket pkt;
|
||||
avcodec_get_frame_defaults(&orig);
|
||||
len=avcodec_decode_video(&d->av_context,&orig,&got_picture,p,end-p);
|
||||
av_init_packet(&pkt);
|
||||
pkt.data = p;
|
||||
pkt.size = end-p;
|
||||
len=avcodec_decode_video2(&d->av_context,&orig,&got_picture,&pkt);
|
||||
if (len<=0) {
|
||||
ms_warning("ms_AVdecoder_process: error %i.",len);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -28,9 +28,11 @@ static void yuv_buf_init(YuvBuf *buf, int w, int h, uint8_t *ptr){
|
|||
buf->planes[0]=ptr;
|
||||
buf->planes[1]=buf->planes[0]+ysize;
|
||||
buf->planes[2]=buf->planes[1]+usize;
|
||||
buf->planes[3]=0;
|
||||
buf->strides[0]=w;
|
||||
buf->strides[1]=w/2;
|
||||
buf->strides[2]=buf->strides[1];
|
||||
buf->strides[3]=0;
|
||||
}
|
||||
|
||||
int yuv_buf_init_from_mblk(YuvBuf *buf, mblk_t *m){
|
||||
|
|
|
|||
|
|
@ -46,13 +46,17 @@ static mblk_t *jpeg2yuv(uint8_t *jpgbuf, int bufsize, MSVideoSize *reqsize){
|
|||
AVPicture dest;
|
||||
mblk_t *ret;
|
||||
struct SwsContext *sws_ctx;
|
||||
AVPacket pkt;
|
||||
|
||||
avcodec_get_context_defaults(&av_context);
|
||||
if (avcodec_open(&av_context,avcodec_find_decoder(CODEC_ID_MJPEG))<0){
|
||||
ms_error("jpeg2yuv: avcodec_open failed");
|
||||
return NULL;
|
||||
}
|
||||
if (avcodec_decode_video(&av_context,&orig,&got_picture,jpgbuf,bufsize)<0){
|
||||
av_init_packet(&pkt);
|
||||
pkt.data=jpgbuf;
|
||||
pkt.size=bufsize;
|
||||
if (avcodec_decode_video2(&av_context,&orig,&got_picture,&pkt)<0){
|
||||
ms_error("jpeg2yuv: avcodec_decode_video failed");
|
||||
avcodec_close(&av_context);
|
||||
return NULL;
|
||||
|
|
|
|||
|
|
@ -261,7 +261,12 @@ static void dec_process_frame(MSFilter *f, mblk_t *inm){
|
|||
frame=s->input;
|
||||
s->input=NULL;
|
||||
while ( (remain=frame->b_wptr-frame->b_rptr)> 0) {
|
||||
len=avcodec_decode_video(&s->av_context,&orig,&got_picture,(uint8_t*)frame->b_rptr,remain );
|
||||
AVPacket pkt;
|
||||
av_init_packet(&pkt);
|
||||
pkt.data = frame->b_rptr;
|
||||
pkt.size = remain;
|
||||
len=avcodec_decode_video2(&s->av_context,&orig,&got_picture,&pkt);
|
||||
/*len=avcodec_decode_video(&s->av_context,&orig,&got_picture,(uint8_t*)frame->b_rptr,remain );*/
|
||||
if (len<=0) {
|
||||
ms_warning("ms_AVdecoder_process: error %i.",len);
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue