Changeset 744
- Timestamp:
- 11/27/07 11:41:54 (10 months ago)
- Files:
-
- branches/perian-1.1/FFusionCodec.c (modified) (3 diffs)
- branches/perian-1.1/bitstream_info.c (modified) (1 diff)
- branches/perian-1.1/bitstream_info.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/perian-1.1/FFusionCodec.c
r736 r744 315 315 DisposeImageCodecMPDrawBandUPP(glob->drawBandUPP); 316 316 } 317 318 if (glob->avCodec)319 {320 avcodec_close(glob->avContext);321 }322 317 323 318 if (glob->avContext) … … 326 321 free(glob->avContext->extradata); 327 322 323 if (glob->avContext->codec) avcodec_close(glob->avContext); 328 324 av_free(glob->avContext); 329 325 } … … 677 673 if(glob->avContext->extradata_size != 0 && glob->begin.parser != NULL) 678 674 ffusionParseExtraData(glob->begin.parser, glob->avContext->extradata, glob->avContext->extradata_size); 675 676 // XXX: at the moment ffmpeg can't handle interlaced H.264 right 677 // specifically PAFF + spatial prediction 678 if (codecID == CODEC_ID_H264 && ffusionIsParsedVideoInterlaced(glob->begin.parser)) 679 return -2; 679 680 680 681 // some hooks into ffmpeg's buffer allocation to get frames in branches/perian-1.1/bitstream_info.c
r741 r744 820 820 return 0; 821 821 } 822 823 int ffusionIsParsedVideoInterlaced(FFusionParserContext *parser) 824 { 825 if (parser->parserStructure == &ffusionH264Parser) { 826 H264ParserContext *h264parser = parser->internalContext; 827 return !h264parser->frame_mbs_only_flag; 828 } 829 830 return 0; 831 } branches/perian-1.1/bitstream_info.h
r588 r744 43 43 int ffusionParseExtraData(FFusionParserContext *parser, const uint8_t *buf, int buf_size); 44 44 int ffusionParse(FFusionParserContext *parser, const uint8_t *buf, int buf_size, int *out_buf_size, int *type, int *skippable); 45 int ffusionIsParsedVideoInterlaced(FFusionParserContext *parser); 45 46 46 47 #ifdef __cplusplus
