Lines Matching refs:ffd

97 static void FFDEC_LoadDSI(FFDec *ffd, GF_BitStream *bs, AVCodec *codec, AVCodecContext *ctx, Bool f…  in FFDEC_LoadDSI()  argument
155 FFDec *ffd = (FFDec *)plug->privateStack; in FFDEC_AttachStream() local
157 if (!ffd->oti) return GF_NOT_SUPPORTED; in FFDEC_AttachStream()
165 if (esd->dependsOnESID != ffd->base_ES_ID) return GF_NOT_SUPPORTED; in FFDEC_AttachStream()
171 ffd->depth_ES_ID = esd->ESID; in FFDEC_AttachStream()
172 ctx = &ffd->depth_ctx; in FFDEC_AttachStream()
173 codec = &ffd->depth_codec; in FFDEC_AttachStream()
174 frame = &ffd->depth_frame; in FFDEC_AttachStream()
176 if (ffd->base_ES_ID) return GF_NOT_SUPPORTED; in FFDEC_AttachStream()
177 ffd->base_ES_ID = esd->ESID; in FFDEC_AttachStream()
178 ctx = &ffd->base_ctx; in FFDEC_AttachStream()
179 codec = &ffd->base_codec; in FFDEC_AttachStream()
180 frame = &ffd->base_frame; in FFDEC_AttachStream()
192 if (ffd->oti == GPAC_OTI_MEDIA_FFMPEG) { in FFDEC_AttachStream()
195 if (ffd->st==GF_STREAM_AUDIO) { in FFDEC_AttachStream()
207 } else if (ffd->st==GF_STREAM_VISUAL) { in FFDEC_AttachStream()
213 ffd->raw_pix_fmt = gf_bs_read_u32(bs); in FFDEC_AttachStream()
217 FFDEC_LoadDSI(ffd, bs, *codec, *ctx, GF_TRUE); in FFDEC_AttachStream()
221 else if (ffd->oti == GPAC_OTI_MEDIA_GENERIC) { in FFDEC_AttachStream()
224 if (ffd->st==GF_STREAM_AUDIO) { in FFDEC_AttachStream()
237 } else if (ffd->st==GF_STREAM_VISUAL) { in FFDEC_AttachStream()
244 FFDEC_LoadDSI(ffd, bs, *codec, *ctx, GF_FALSE); in FFDEC_AttachStream()
250 if (ffd->st==GF_STREAM_VISUAL) { in FFDEC_AttachStream()
252 switch (ffd->oti) { in FFDEC_AttachStream()
275 ffd->is_image = GF_TRUE; in FFDEC_AttachStream()
279 ffd->is_image = GF_TRUE; in FFDEC_AttachStream()
295 } else if (ffd->st==GF_STREAM_AUDIO) { in FFDEC_AttachStream()
297 switch (ffd->oti) { in FFDEC_AttachStream()
323 else if ((ffd->st==GF_STREAM_ND_SUBPIC) && (ffd->oti==0xe0)) { in FFDEC_AttachStream()
334 FFDEC_LoadDSI(ffd, bs, *codec, *ctx, GF_FALSE); in FFDEC_AttachStream()
363 if (ffd->st==GF_STREAM_VISUAL) { in FFDEC_AttachStream()
365 if ((ffd->oti==GPAC_OTI_VIDEO_MPEG4_PART2) in FFDEC_AttachStream()
366 || (ffd->oti == GPAC_OTI_VIDEO_AVC) in FFDEC_AttachStream()
367 || (ffd->oti == GPAC_OTI_VIDEO_HEVC) in FFDEC_AttachStream()
368 || (ffd->oti == GPAC_OTI_VIDEO_AV1) in FFDEC_AttachStream()
375 if (ffd->oti==GPAC_OTI_VIDEO_MPEG4_PART2) { in FFDEC_AttachStream()
383 if (!dsi.width && !dsi.height) ffd->check_short_header = GF_TRUE; in FFDEC_AttachStream()
384 ffd->previous_par = (dsi.par_num<<16) | dsi.par_den; in FFDEC_AttachStream()
385 ffd->no_par_update = GF_TRUE; in FFDEC_AttachStream()
387 } else if (ffd->oti==GPAC_OTI_VIDEO_AVC) { in FFDEC_AttachStream()
388 ffd->check_h264_isma = GF_TRUE; in FFDEC_AttachStream()
410 if (ffd->oti == GPAC_OTI_VIDEO_HEVC) { in FFDEC_AttachStream()
446 if (sOpt) ffd->output_cb_size = atoi(sOpt); in FFDEC_AttachStream()
449 if (!ffd->output_cb_size) ffd->output_cb_size = 4; in FFDEC_AttachStream()
453 (*ctx)->pix_fmt = ffd->raw_pix_fmt; in FFDEC_AttachStream()
454 if ((*ctx)->extradata && strstr((char *) (*ctx)->extradata, "BottomUp")) ffd->flipped = GF_TRUE; in FFDEC_AttachStream()
464 if (ffd->st==GF_STREAM_AUDIO) { in FFDEC_AttachStream()
469 ffd->out_size = (*ctx)->channels * (*ctx)->frame_size * 2 /*16 / 8*/; in FFDEC_AttachStream()
476 ffd->audio_frame = avcodec_alloc_frame(); in FFDEC_AttachStream()
478 ffd->audio_frame = av_frame_alloc(); in FFDEC_AttachStream()
494 ffd->pix_fmt = GF_PIXEL_YV12; in FFDEC_AttachStream()
496 ffd->pix_fmt = GF_PIXEL_RGB_24; in FFDEC_AttachStream()
518 ffd->pix_fmt = GF_PIXEL_YV12; in FFDEC_AttachStream()
521 ffd->pix_fmt = GF_PIXEL_YV12; in FFDEC_AttachStream()
525 ffd->out_pix_fmt = ffd->pix_fmt; in FFDEC_AttachStream()
527 if (ffd->out_pix_fmt == GF_PIXEL_YV12) { in FFDEC_AttachStream()
528 ffd->stride = (*ctx)->width; in FFDEC_AttachStream()
529 if (ffd->depth_codec) { in FFDEC_AttachStream()
530 ffd->out_size = (*ctx)->width * (*ctx)->height * 5 / 2; in FFDEC_AttachStream()
531 ffd->out_pix_fmt = GF_PIXEL_YUVD; in FFDEC_AttachStream()
532 ffd->yuv_size = (*ctx)->width * (*ctx)->height * 3 / 2; in FFDEC_AttachStream()
534 ffd->out_size = (*ctx)->width * (*ctx)->height * 3 / 2; in FFDEC_AttachStream()
537 ffd->out_size = (*ctx)->width * (*ctx)->height * 3; in FFDEC_AttachStream()
551 FFDec *ffd = (FFDec *)plug->privateStack; in FFDEC_DetachStream() local
553 if (ffd->base_ES_ID==ES_ID) { in FFDEC_DetachStream()
554 ffd->base_ES_ID = 0; in FFDEC_DetachStream()
555 codec = &ffd->base_codec; in FFDEC_DetachStream()
556 ctx = &ffd->base_ctx; in FFDEC_DetachStream()
558 sws = &ffd->base_sws; in FFDEC_DetachStream()
560 } else if (ffd->depth_ES_ID==ES_ID) { in FFDEC_DetachStream()
561 ffd->depth_ES_ID = 0; in FFDEC_DetachStream()
562 codec = &ffd->depth_codec; in FFDEC_DetachStream()
563 ctx = &ffd->depth_ctx; in FFDEC_DetachStream()
565 sws = &ffd->depth_sws; in FFDEC_DetachStream()
580 if (ffd->audio_frame) { in FFDEC_DetachStream()
581 av_free(ffd->audio_frame); in FFDEC_DetachStream()
583 if (ffd->base_frame) { in FFDEC_DetachStream()
584 av_free(ffd->base_frame); in FFDEC_DetachStream()
586 if (ffd->depth_frame) { in FFDEC_DetachStream()
587 av_free(ffd->depth_frame); in FFDEC_DetachStream()
603 FFDec *ffd = (FFDec *)plug->privateStack; in FFDEC_GetCapabilities() local
631 if (!ffd->base_ctx) { in FFDEC_GetCapabilities()
639 capability->cap.valueInt = ffd->out_size; in FFDEC_GetCapabilities()
642 capability->cap.valueInt = ffd->base_ctx->sample_rate; in FFDEC_GetCapabilities()
645 capability->cap.valueInt = ffd->base_ctx->channels; in FFDEC_GetCapabilities()
651 capability->cap.valueInt = (ffd->st==GF_STREAM_AUDIO) ? 4 : 1; in FFDEC_GetCapabilities()
655 …capability->cap.valueInt = (ffd->st==GF_STREAM_AUDIO) ? 0 : (ffd->is_image ? 1 : ffd->output_cb_si… in FFDEC_GetCapabilities()
659 capability->cap.valueInt = (ffd->st==GF_STREAM_AUDIO) ? ffd->base_ctx->frame_size : 0; in FFDEC_GetCapabilities()
662 capability->cap.valueInt = ffd->base_ctx->width; in FFDEC_GetCapabilities()
665 capability->cap.valueInt = ffd->base_ctx->height; in FFDEC_GetCapabilities()
668 if (ffd->out_pix_fmt==GF_PIXEL_RGB_24) in FFDEC_GetCapabilities()
669 capability->cap.valueInt = ffd->stride*3; in FFDEC_GetCapabilities()
670 else if (ffd->out_pix_fmt==GF_PIXEL_RGBA) in FFDEC_GetCapabilities()
671 capability->cap.valueInt = ffd->stride*4; in FFDEC_GetCapabilities()
673 capability->cap.valueInt = ffd->stride; in FFDEC_GetCapabilities()
679 capability->cap.valueInt = ffd->previous_par; in FFDEC_GetCapabilities()
682 if (ffd->base_ctx->width) capability->cap.valueInt = ffd->out_pix_fmt; in FFDEC_GetCapabilities()
696 if (ffd->base_ctx->channels==1) { in FFDEC_GetCapabilities()
715 FFDec *ffd = (FFDec *)plug->privateStack; in FFDEC_SetCapabilities() local
717 assert( ffd ); in FFDEC_SetCapabilities()
720 ffd->frame_start = 0; in FFDEC_SetCapabilities()
721 if (ffd->st==GF_STREAM_VISUAL) { in FFDEC_SetCapabilities()
722 if (ffd->base_ctx && ffd->base_ctx->codec) avcodec_flush_buffers(ffd->base_ctx); in FFDEC_SetCapabilities()
723 if (ffd->depth_ctx && ffd->depth_ctx->codec) avcodec_flush_buffers(ffd->depth_ctx); in FFDEC_SetCapabilities()
727 ffd->direct_output_mode = capability.cap.valueBool ? 1 : 0; in FFDEC_SetCapabilities()
730 ffd->direct_output_mode = capability.cap.valueInt ? 2 : 0; in FFDEC_SetCapabilities()
737 static GF_Err FFDEC_GetOutputPixelFromat (u32 pix_fmt, u32 * out_pix_fmt, FFDec *ffd) in FFDEC_GetOutputPixelFromat() argument
740 if (!out_pix_fmt || !ffd) return GF_BAD_PARAM; in FFDEC_GetOutputPixelFromat()
780 static GF_Err FFDEC_ProcessAudio(FFDec *ffd, in FFDEC_ProcessAudio() argument
791 AVCodecContext *ctx = ffd->base_ctx; in FFDEC_ProcessAudio()
806 ffd->frame_start = 0; in FFDEC_ProcessAudio()
809 if (ffd->frame_start>inBufferLength) ffd->frame_start = 0; in FFDEC_ProcessAudio()
811 else if (ffd->frame_start) { in FFDEC_ProcessAudio()
812 pkt.data += ffd->frame_start; in FFDEC_ProcessAudio()
813 pkt.size -= ffd->frame_start; in FFDEC_ProcessAudio()
818 len = avcodec_decode_audio4(ctx, ffd->audio_frame, &gotpic, &pkt); in FFDEC_ProcessAudio()
821 gotpic = ffd->audio_frame->nb_samples * 2 * ctx->channels; in FFDEC_ProcessAudio()
825 len = avcodec_decode_audio3(ctx, (short *)ffd->audio_buf, &gotpic, &pkt); in FFDEC_ProcessAudio()
828 … = avcodec_decode_audio2(ctx, (short *)ffd->audio_buf, &gotpic, inBuffer + ffd->frame_start, inBuf… in FFDEC_ProcessAudio()
831 ffd->frame_start = 0; in FFDEC_ProcessAudio()
835 ffd->frame_start = 0; in FFDEC_ProcessAudio()
840 if (!ffd->out_size) { in FFDEC_ProcessAudio()
844 ffd->out_size = ctx->channels * ctx->frame_size * bpp; in FFDEC_ProcessAudio()
846 if (ffd->out_size < (u32) gotpic) { in FFDEC_ProcessAudio()
848 (*outBufferLength) = ffd->out_size = gotpic; in FFDEC_ProcessAudio()
851 if (ffd->out_size > buf_size) { in FFDEC_ProcessAudio()
854 if (ffd->out_size < (u32) 576*ctx->channels) ffd->out_size=ctx->channels*576; in FFDEC_ProcessAudio()
855 (*outBufferLength) = ffd->out_size; in FFDEC_ProcessAudio()
860 if (ffd->audio_frame->format==AV_SAMPLE_FMT_FLTP) { in FFDEC_ProcessAudio()
864 Float* inputChannel = (Float*)ffd->audio_frame->extended_data[j]; in FFDEC_ProcessAudio()
865 for (i=0 ; i<ffd->audio_frame->nb_samples ; i++) { in FFDEC_ProcessAudio()
873 } else if (ffd->audio_frame->format==AV_SAMPLE_FMT_S16P) { in FFDEC_ProcessAudio()
877 s16* inputChannel = (s16*)ffd->audio_frame->extended_data[j]; in FFDEC_ProcessAudio()
878 for (i=0 ; i<ffd->audio_frame->nb_samples ; i++) { in FFDEC_ProcessAudio()
883 } else if (ffd->audio_frame->format==AV_SAMPLE_FMT_U8) { in FFDEC_ProcessAudio()
884 u32 i, size = ffd->audio_frame->nb_samples * ctx->channels; in FFDEC_ProcessAudio()
886 s8 *input = (s8 *) ffd->audio_frame->data[0]; in FFDEC_ProcessAudio()
890 } else if (ffd->audio_frame->format==AV_SAMPLE_FMT_S32) { in FFDEC_ProcessAudio()
891 u32 i, shift, size = ffd->audio_frame->nb_samples * ctx->channels; in FFDEC_ProcessAudio()
893 s32 *input = (s32*) ffd->audio_frame->data[0]; in FFDEC_ProcessAudio()
898 } else if (ffd->audio_frame->format==AV_SAMPLE_FMT_FLT) { in FFDEC_ProcessAudio()
899 u32 i, size = ffd->audio_frame->nb_samples * ctx->channels; in FFDEC_ProcessAudio()
901 Float *input = (Float *) ffd->audio_frame->data[0]; in FFDEC_ProcessAudio()
908 } else if (ffd->audio_frame->format==AV_SAMPLE_FMT_S16) { in FFDEC_ProcessAudio()
909 …memcpy(outBuffer, ffd->audio_frame->data[0], sizeof(char) * ffd->audio_frame->nb_samples * ctx->ch… in FFDEC_ProcessAudio()
910 } else if (ffd->audio_frame->nb_samples) { in FFDEC_ProcessAudio()
911 …GF_LOG(GF_LOG_ERROR, GF_LOG_CODEC, ("[FFMPEG Decoder] Raw Audio format %d not supported\n", ffd->a… in FFDEC_ProcessAudio()
915 memcpy(outBuffer, ffd->audio_buf, sizeof(char) * gotpic); in FFDEC_ProcessAudio()
922 ffd->audio_frame->nb_samples = 0; in FFDEC_ProcessAudio()
925 ffd->frame_start += len; in FFDEC_ProcessAudio()
926 if (inBufferLength <= ffd->frame_start) { in FFDEC_ProcessAudio()
927 ffd->frame_start = 0; in FFDEC_ProcessAudio()
931 if ((*outBufferLength)+ctx->frame_size<ffd->out_size) goto redecode; in FFDEC_ProcessAudio()
938 static GF_Err FFDEC_ProcessRawVideo(FFDec *ffd, in FFDEC_ProcessRawVideo() argument
944 AVCodecContext *ctx = ffd->base_ctx; in FFDEC_ProcessRawVideo()
946 if (*outBufferLength != ffd->out_size) { in FFDEC_ProcessRawVideo()
947 *outBufferLength = ffd->out_size; in FFDEC_ProcessRawVideo()
951 *outBufferLength = ffd->out_size; in FFDEC_ProcessRawVideo()
954 if (ffd->raw_pix_fmt==PIX_FMT_BGR24) { in FFDEC_ProcessRawVideo()
959 if (ffd->flipped) { in FFDEC_ProcessRawVideo()
971 memcpy(outBuffer, inBuffer, ffd->out_size); in FFDEC_ProcessRawVideo()
981 static GF_Err FFDEC_ProcessVideo(FFDec *ffd, argument
998 struct SwsContext **cached_sws = &(ffd->base_sws);
1001 if (!ES_ID || (ffd->base_ES_ID==ES_ID)) {
1002 ctx = ffd->base_ctx;
1003 codec = &ffd->base_codec;
1004 frame = ffd->base_frame;
1005 } else if (ffd->depth_ES_ID==ES_ID) {
1006 ctx = ffd->depth_ctx;
1007 codec = &ffd->depth_codec;
1008 frame = ffd->depth_frame;
1048 if (ffd->had_pic) {
1049 ffd->had_pic = GF_FALSE;
1050 gotpic = ffd->needs_output_resize ? 0 : 1;
1051 ffd->needs_output_resize = 0;
1053 if (ffd->check_h264_isma) {
1082 ffd->check_h264_isma = 2;
1085 else if (ffd->check_h264_isma == 1) {
1086 ffd->check_h264_isma = GF_FALSE;
1095 if (!ffd->check_short_header) {
1102 ffd->check_short_header = GF_FALSE;
1141 if (ffd->out_pix_fmt == GF_PIXEL_YV12) {
1148 if (gotpic && ffd->needs_output_resize) {
1149 ffd->needs_output_resize = GF_FALSE;
1150 ffd->had_pic = GF_TRUE;
1151 *outBufferLength = ffd->out_size;
1152 if (ffd->direct_output_mode) {
1153 ffd->frame_size_changed = GF_TRUE;
1161 ret = FFDEC_GetOutputPixelFromat(ctx->pix_fmt, &out_pix_fmt, ffd);
1169 || (ffd->direct_output_mode && (stride != ffd->stride))
1170 || (ffd->out_pix_fmt != out_pix_fmt)
1175 ffd->stride = (ffd->direct_output_mode) ? frame->linesize[0] : ctx->width;
1177 ffd->out_pix_fmt = ffd->pix_fmt = GF_PIXEL_RGBA;
1180 else if (ffd->out_pix_fmt == GF_PIXEL_RGB_24) {
1185 outsize = ffd->stride * ctx->height * 3 /2 ;
1186 ffd->out_pix_fmt = GF_PIXEL_YV12;
1192 outsize = ffd->stride * ctx->height * 2 ;
1193 ffd->out_pix_fmt = GF_PIXEL_YUV422;
1198 outsize = ffd->stride * ctx->height * 3 ;
1199 ffd->out_pix_fmt = GF_PIXEL_YUV444;
1204 ffd->stride = ffd->direct_output_mode ? frame->linesize[0] : ctx->width * 2;
1205 ffd->out_pix_fmt = GF_PIXEL_YV12_10;
1206 outsize = 3*ffd->stride * ctx->height / 2;
1209 ffd->stride = ffd->direct_output_mode ? frame->linesize[0] : ctx->width * 2;
1210 ffd->out_pix_fmt = GF_PIXEL_YUV422_10;
1211 outsize = ffd->stride * ctx->height * 2;
1214 ffd->stride = ffd->direct_output_mode ? frame->linesize[0] : ctx->width * 2;
1215 ffd->out_pix_fmt = GF_PIXEL_YUV444_10;
1216 outsize = ffd->stride * ctx->height * 3;
1222 if (ffd->depth_codec) {
1224 ffd->yuv_size = 3 * ctx->width * ctx->height / 2;
1226 ffd->out_size = outsize;
1228 if (!ffd->no_par_update && ctx->sample_aspect_ratio.num && ctx->sample_aspect_ratio.den) {
1229 ffd->previous_par = (ctx->sample_aspect_ratio.num<<16) | ctx->sample_aspect_ratio.den;
1235 ffd->needs_output_resize = GF_TRUE;
1238 *outBufferLength = ffd->out_size;
1239 if (ffd->check_h264_isma) {
1249 ffd->had_pic = GF_TRUE;
1251 if (ffd->direct_output_mode) {
1252 ffd->frame_size_changed = GF_TRUE;
1259 if (!ffd->no_par_update && ctx->sample_aspect_ratio.num && ctx->sample_aspect_ratio.den) {
1261 if (ffd->previous_par && (new_par != ffd->previous_par)) {
1262 ffd->previous_par = new_par;
1265 ffd->needs_output_resize = GF_TRUE;
1268 *outBufferLength = ffd->out_size;
1269 ffd->had_pic = GF_TRUE;
1270 if (ffd->direct_output_mode) {
1271 ffd->frame_size_changed = GF_TRUE;
1293 if (ffd->direct_output_mode) {
1294 *outBufferLength = ffd->out_size;
1298 if (ES_ID && (ES_ID == ffd->depth_ES_ID)) {
1303 pYD = (u8 *) outBuffer+ffd->yuv_size;
1309 *outBufferLength = ffd->out_size;
1314 if (ffd->pix_fmt==GF_PIXEL_RGB_24) {
1316 } else if (ffd->pix_fmt==GF_PIXEL_RGBA) {
1343 *outBufferLength = ffd->out_size;
1348 if (ffd->out_pix_fmt==GF_PIXEL_RGB_24) {
1352 } else if (ffd->out_pix_fmt==GF_PIXEL_RGBA) {
1357 if (ffd->out_pix_fmt == GF_PIXEL_YV12) {
1359 pict.data[1] = (uint8_t *)outBuffer + ffd->stride * ctx->height;
1360 pict.data[2] = (uint8_t *)outBuffer + 5 * ffd->stride * ctx->height / 4;
1361 pict.linesize[0] = ffd->stride;
1362 pict.linesize[1] = pict.linesize[2] = ffd->stride/2;
1364 } else if (ffd->out_pix_fmt == GF_PIXEL_YUV422) {
1366 pict.data[1] = (uint8_t *)outBuffer + ffd->stride * ctx->height;
1367 pict.data[2] = (uint8_t *)outBuffer + 3*ffd->stride * ctx->height/2;
1368 pict.linesize[0] = ffd->stride;
1369 pict.linesize[1] = pict.linesize[2] = ffd->stride/2;
1371 } else if (ffd->out_pix_fmt == GF_PIXEL_YUV444) {
1373 pict.data[1] = (uint8_t *)outBuffer + ffd->stride * ctx->height;
1374 pict.data[2] = (uint8_t *)outBuffer + 2*ffd->stride * ctx->height;
1375 pict.linesize[0] = pict.linesize[1] = pict.linesize[2] = ffd->stride;
1382 pict.data[1] = (uint8_t *)outBuffer + ffd->stride * ctx->height;
1383 pict.data[2] = (uint8_t *)outBuffer + 5 * ffd->stride * ctx->height / 4;
1384 pict.linesize[0] = ffd->stride;
1385 pict.linesize[1] = pict.linesize[2] = ffd->stride/2;
1389 pict.data[1] = (uint8_t *)outBuffer + ffd->stride * ctx->height;
1390 pict.data[2] = (uint8_t *)outBuffer + 3*ffd->stride * ctx->height/2;
1391 pict.linesize[0] = ffd->stride;
1392 pict.linesize[1] = pict.linesize[2] = ffd->stride/2;
1396 pict.data[1] = (uint8_t *)outBuffer + ffd->stride * ctx->height;
1397 pict.data[2] = (uint8_t *)outBuffer + 2*ffd->stride * ctx->height;
1398 pict.linesize[0] = pict.linesize[1] = pict.linesize[2] = ffd->stride;
1431 *outBufferLength = ffd->out_size;
1445 FFDec *ffd = (FFDec*)plug->privateStack; local
1447 if (ffd->st==GF_STREAM_AUDIO) {
1448 …return FFDEC_ProcessAudio(ffd, inBuffer, inBufferLength, ES_ID, CTS, outBuffer, outBufferLength, P…
1449 } else if ( ffd->base_ctx->codec_id == CODEC_ID_RAWVIDEO) {
1450 …return FFDEC_ProcessRawVideo(ffd, inBuffer, inBufferLength, ES_ID, CTS, outBuffer, outBufferLength…
1452 …return FFDEC_ProcessVideo(ffd, inBuffer, inBufferLength, ES_ID, CTS, outBuffer, outBufferLength, P…
1459 FFDec *ffd = (FFDec*)ifcg->privateStack; local
1462 if (ffd->direct_output_mode != 1) return GF_BAD_PARAM;
1464 if (ES_ID && (ffd->depth_ES_ID==ES_ID)) {
1465 frame = ffd->depth_frame;
1468 frame = ffd->base_frame;
1522 FFDec *ffd = (FFDec*)ifcg->privateStack; local
1526 if (!ffd->base_frame) return GF_BAD_PARAM;
1536 ff_frame->ctx = ffd;
1537 ff_frame->frame = av_frame_clone(ffd->base_frame);
1543 if (ffd->frame_size_changed) {
1544 ffd->frame_size_changed = GF_FALSE;
1557 FFDec *ffd = (FFDec*)plug->privateStack; local
1566 ffd->oti = esd->decoderConfig->objectTypeIndication;
1567 ffd->st = StreamType;
1573 if (ffd->oti == GPAC_OTI_MEDIA_FFMPEG) {
1579 else if (ffd->oti == GPAC_OTI_MEDIA_GENERIC) {
1594 switch (ffd->oti) {
1654 switch (ffd->oti) {
1712 else if ((StreamType==GF_STREAM_ND_SUBPIC) && (ffd->oti==0xe0))
1739 FFDec *ffd; local
1742 ffd = (FFDec*)dec->privateStack;
1743 if (ffd && ffd->base_codec) {
1744 …sprintf(ffd->szCodec, "FFMPEG %s - version %s", ffd->base_codec->name ? ffd->base_codec->name : "u…
1745 return ffd->szCodec;
1792 FFDec *ffd; local
1795 ffd = (FFDec*)dec->privateStack;
1797 if (ffd) {
1798 if (ffd->base_ctx && ffd->base_ctx->codec) avcodec_close(ffd->base_ctx);
1799 ffd->base_ctx = NULL;
1800 if (ffd->depth_ctx && ffd->depth_ctx->codec) avcodec_close(ffd->depth_ctx);
1801 ffd->depth_ctx = NULL;
1803 if (ffd->base_sws) sws_freeContext(ffd->base_sws);
1804 ffd->base_sws = NULL;
1805 if (ffd->depth_sws) sws_freeContext(ffd->base_sws);
1806 ffd->depth_sws = NULL;
1808 gf_free(ffd);