@@ -218,12 +218,18 @@ CDVDVideoCodec* CDVDFactoryCodec::CreateVideoCodec(CDVDStreamInfo &hint, const C
218218 case AV_CODEC_ID_MPEG4:
219219 case AV_CODEC_ID_MSMPEG4V2:
220220 case AV_CODEC_ID_MSMPEG4V3:
221+ if (hint.width > CSettings::GetInstance ().GetInt (CSettings::SETTING_VIDEOPLAYER_ACCELMPEG2))
222+ if ( (pCodec = OpenCodec (new CDVDVideoCodecAmlogic (), hint, options)) ) return pCodec;
223+ break ;
221224 case AV_CODEC_ID_MPEG1VIDEO:
222225 case AV_CODEC_ID_MPEG2VIDEO:
223- // Avoid h/w decoder for SD; Those files might use features
224- // not supported and can easily be soft-decoded
225- if (hint.width <= 800 )
226- break ;
226+ if (hint.width >CSettings::GetInstance ().GetInt (CSettings::SETTING_VIDEOPLAYER_ACCELMPEG2))
227+ if ( (pCodec = OpenCodec (new CDVDVideoCodecAmlogic (), hint, options)) ) return pCodec;
228+ break ;
229+ case AV_CODEC_ID_H264:
230+ if (hint.width >CSettings::GetInstance ().GetInt (CSettings::SETTING_VIDEOPLAYER_ACCELH264))
231+ if ( (pCodec = OpenCodec (new CDVDVideoCodecAmlogic (), hint, options)) ) return pCodec;
232+ break ;
227233 default :
228234 if ( (pCodec = OpenCodec (new CDVDVideoCodecAmlogic (), hint, options)) ) return pCodec;
229235 }
@@ -272,48 +278,69 @@ CDVDVideoCodec* CDVDFactoryCodec::CreateVideoCodec(CDVDStreamInfo &hint, const C
272278 {
273279 switch (hint.codec )
274280 {
275- case AV_CODEC_ID_MPEG4:
276- case AV_CODEC_ID_MSMPEG4V2:
277- case AV_CODEC_ID_MSMPEG4V3:
278- // Avoid h/w decoder for SD; Those files might use features
279- // not supported and can easily be soft-decoded
280- if (hint. width <= 800 )
281- break ;
282- default :
283- CLog::Log (LOGINFO, " MediaCodec (Surface) Video Decoder... " );
281+ case AV_CODEC_ID_MPEG4:
282+ case AV_CODEC_ID_MSMPEG4V2:
283+ case AV_CODEC_ID_MSMPEG4V3:
284+ if (hint. width > CSettings::GetInstance (). GetInt (CSettings::SETTING_VIDEOPLAYER_ACCELMPEG4))
285+ if ( (pCodec = OpenCodec ( new CDVDVideoCodecAndroidMediaCodec ( true ), hint, options)) ) return pCodec;
286+ break ;
287+ case AV_CODEC_ID_MPEG1VIDEO:
288+ case AV_CODEC_ID_MPEG2VIDEO :
289+ if (hint. width > CSettings::GetInstance (). GetInt (CSettings::SETTING_VIDEOPLAYER_ACCELMPEG2))
284290 if ( (pCodec = OpenCodec (new CDVDVideoCodecAndroidMediaCodec (true ), hint, options)) ) return pCodec;
291+ break ;
292+ case AV_CODEC_ID_H264:
293+ if (hint.width > CSettings::GetInstance ().GetInt (CSettings::SETTING_VIDEOPLAYER_ACCELH264))
294+ if ( (pCodec = OpenCodec (new CDVDVideoCodecAndroidMediaCodec (true ), hint, options)) ) return pCodec;
295+ break ;
296+ default :
297+ if ( (pCodec = OpenCodec (new CDVDVideoCodecAndroidMediaCodec (true ), hint, options)) ) return pCodec;
285298 }
286299 }
287300 if (!hint.software && CSettings::GetInstance ().GetBool (CSettings::SETTING_VIDEOPLAYER_USEMEDIACODEC))
288301 {
289302 switch (hint.codec )
290303 {
291- case AV_CODEC_ID_MPEG4:
292- case AV_CODEC_ID_MSMPEG4V2:
293- case AV_CODEC_ID_MSMPEG4V3:
294- // Avoid h/w decoder for SD; Those files might use features
295- // not supported and can easily be soft-decoded
296- if (hint.width <= 800 )
297- break ;
298- default :
299- CLog::Log (LOGINFO, " MediaCodec Video Decoder..." );
304+ case AV_CODEC_ID_MPEG4:
305+ case AV_CODEC_ID_MSMPEG4V2:
306+ case AV_CODEC_ID_MSMPEG4V3:
307+ if (hint.width > CSettings::GetInstance ().GetInt (CSettings::SETTING_VIDEOPLAYER_ACCELMPEG4))
300308 if ( (pCodec = OpenCodec (new CDVDVideoCodecAndroidMediaCodec (false ), hint, options)) ) return pCodec;
309+ break ;
310+ case AV_CODEC_ID_MPEG1VIDEO:
311+ case AV_CODEC_ID_MPEG2VIDEO:
312+ if (hint.width > CSettings::GetInstance ().GetInt (CSettings::SETTING_VIDEOPLAYER_ACCELMPEG2))
313+ if ( (pCodec = OpenCodec (new CDVDVideoCodecAndroidMediaCodec (false ), hint, options)) ) return pCodec;
314+ break ;
315+ case AV_CODEC_ID_H264:
316+ if (hint.width > CSettings::GetInstance ().GetInt (CSettings::SETTING_VIDEOPLAYER_ACCELH264))
317+ if ( (pCodec = OpenCodec (new CDVDVideoCodecAndroidMediaCodec (false ), hint, options)) ) return pCodec;
318+ break ;
319+ default :
320+ if ( (pCodec = OpenCodec (new CDVDVideoCodecAndroidMediaCodec (false ), hint, options)) ) return pCodec;
301321 }
302322 }
303323 if (!hint.software && hint.height <= 1080 && CSettings::GetInstance ().GetBool (CSettings::SETTING_VIDEOPLAYER_USEMEDIACODECSURFACE))
304324 {
305325 switch (hint.codec )
306326 {
307- case AV_CODEC_ID_MPEG4:
308- case AV_CODEC_ID_MSMPEG4V2:
309- case AV_CODEC_ID_MSMPEG4V3:
310- // Avoid h/w decoder for SD; Those files might use features
311- // not supported and can easily be soft-decoded
312- if (hint. width <= 800 )
313- break ;
314- default :
315- CLog::Log (LOGINFO, " MediaCodec (Surface) Video Decoder... " );
327+ case AV_CODEC_ID_MPEG4:
328+ case AV_CODEC_ID_MSMPEG4V2:
329+ case AV_CODEC_ID_MSMPEG4V3:
330+ if (hint. width > CSettings::GetInstance (). GetInt (CSettings::SETTING_VIDEOPLAYER_ACCELMPEG4))
331+ if ( (pCodec = OpenCodec ( new CDVDVideoCodecAndroidMediaCodec ( true ), hint, options)) ) return pCodec;
332+ break ;
333+ case AV_CODEC_ID_MPEG1VIDEO:
334+ case AV_CODEC_ID_MPEG2VIDEO :
335+ if (hint. width > CSettings::GetInstance (). GetInt (CSettings::SETTING_VIDEOPLAYER_ACCELMPEG2))
316336 if ( (pCodec = OpenCodec (new CDVDVideoCodecAndroidMediaCodec (true ), hint, options)) ) return pCodec;
337+ break ;
338+ case AV_CODEC_ID_H264:
339+ if (hint.width > CSettings::GetInstance ().GetInt (CSettings::SETTING_VIDEOPLAYER_ACCELH264))
340+ if ( (pCodec = OpenCodec (new CDVDVideoCodecAndroidMediaCodec (true ), hint, options)) ) return pCodec;
341+ break ;
342+ default :
343+ if ( (pCodec = OpenCodec (new CDVDVideoCodecAndroidMediaCodec (true ), hint, options)) ) return pCodec;
317344 }
318345 }
319346#endif
0 commit comments