* making profile selection a bit more tolerant to the badly broken streams

Originally committed as revision 9710 to svn://svn.ffmpeg.org/ffmpeg/trunk
pull/126/head
Roman Shaposhnik 18 years ago
parent f1639f69b4
commit 263c241226
  1. 4
      libavcodec/dvdata.h

@ -2665,14 +2665,14 @@ static inline const DVprofile* dv_frame_profile(uint8_t* frame)
{ {
if ((frame[3] & 0x80) == 0) { /* DSF flag */ if ((frame[3] & 0x80) == 0) { /* DSF flag */
/* it's an NTSC format */ /* it's an NTSC format */
if ((frame[80*5 + 48 + 3] & 0x4)) { /* 4:2:2 sampling */ if ((frame[80*5 + 48 + 3] & 0x4) && (frame[80*5 + 48] == dv_video_source)) { /* 4:2:2 sampling */
return &dv_profiles[3]; /* NTSC 50Mbps */ return &dv_profiles[3]; /* NTSC 50Mbps */
} else { /* 4:1:1 sampling */ } else { /* 4:1:1 sampling */
return &dv_profiles[0]; /* NTSC 25Mbps */ return &dv_profiles[0]; /* NTSC 25Mbps */
} }
} else { } else {
/* it's a PAL format */ /* it's a PAL format */
if ((frame[80*5 + 48 + 3] & 0x4)) { /* 4:2:2 sampling */ if ((frame[80*5 + 48 + 3] & 0x4) && (frame[80*5 + 48] == dv_video_source)) { /* 4:2:2 sampling */
return &dv_profiles[4]; /* PAL 50Mbps */ return &dv_profiles[4]; /* PAL 50Mbps */
} else if ((frame[5] & 0x07) == 0) { /* APT flag */ } else if ((frame[5] & 0x07) == 0) { /* APT flag */
return &dv_profiles[1]; /* PAL 25Mbps 4:2:0 */ return &dv_profiles[1]; /* PAL 25Mbps 4:2:0 */

Loading…
Cancel
Save