Source code
Revision control
Copy as Markdown
Other Tools
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
#ifndef DOM_MEDIA_WEBRTC_GMPH264UTILS_H_
#define DOM_MEDIA_WEBRTC_GMPH264UTILS_H_
#include "H264.h"
#include "gmp-video-codec.h"
namespace mozilla {
inline GMPProfile ToGMPProfile(H264_PROFILE aProfile) {
switch (aProfile) {
case H264_PROFILE_MAIN:
return kGMPH264ProfileMain;
case H264_PROFILE_EXTENDED:
return kGMPH264ProfileExtended;
case H264_PROFILE_HIGH:
return kGMPH264ProfileHigh;
case H264_PROFILE_UNKNOWN:
default:
return kGMPH264ProfileUnknown;
}
}
inline GMPLevel ToGMPLevel(H264_LEVEL aLevel) {
switch (aLevel) {
case H264_LEVEL::H264_LEVEL_1:
return kGMPH264Level1_0;
case H264_LEVEL::H264_LEVEL_1_1:
// H264_LEVEL_1_b has the same value as H264_LEVEL_1_1, while
// kGMPH264Level1_B and kGMPH264Level1_1 differ. Since we can't tell the
// difference, we just ignore the 1_b case.
return kGMPH264Level1_1;
case H264_LEVEL::H264_LEVEL_1_2:
return kGMPH264Level1_2;
case H264_LEVEL::H264_LEVEL_1_3:
return kGMPH264Level1_3;
case H264_LEVEL::H264_LEVEL_2:
return kGMPH264Level2_0;
case H264_LEVEL::H264_LEVEL_2_1:
return kGMPH264Level2_1;
case H264_LEVEL::H264_LEVEL_2_2:
return kGMPH264Level2_2;
case H264_LEVEL::H264_LEVEL_3:
return kGMPH264Level3_0;
case H264_LEVEL::H264_LEVEL_3_1:
return kGMPH264Level3_1;
case H264_LEVEL::H264_LEVEL_3_2:
return kGMPH264Level3_2;
case H264_LEVEL::H264_LEVEL_4:
return kGMPH264Level4_0;
case H264_LEVEL::H264_LEVEL_4_1:
return kGMPH264Level4_1;
case H264_LEVEL::H264_LEVEL_4_2:
return kGMPH264Level4_2;
case H264_LEVEL::H264_LEVEL_5:
return kGMPH264Level5_0;
case H264_LEVEL::H264_LEVEL_5_1:
return kGMPH264Level5_1;
case H264_LEVEL::H264_LEVEL_5_2:
return kGMPH264Level5_2;
// 6.0 and above isn't supported.
default:
return kGMPH264LevelUnknown;
}
}
} // namespace mozilla
#endif // DOM_MEDIA_WEBRTC_GMPH264UTILS_H_