OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2014 The WebRTC project authors. All Rights Reserved. | 2 * Copyright 2014 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
71 private static final String H264_MIME_TYPE = "video/avc"; | 71 private static final String H264_MIME_TYPE = "video/avc"; |
72 // List of supported HW VP8 decoders. | 72 // List of supported HW VP8 decoders. |
73 private static final String[] supportedVp8HwCodecPrefixes = | 73 private static final String[] supportedVp8HwCodecPrefixes = |
74 {"OMX.qcom.", "OMX.Nvidia.", "OMX.Exynos.", "OMX.Intel." }; | 74 {"OMX.qcom.", "OMX.Nvidia.", "OMX.Exynos.", "OMX.Intel." }; |
75 // List of supported HW VP9 decoders. | 75 // List of supported HW VP9 decoders. |
76 private static final String[] supportedVp9HwCodecPrefixes = | 76 private static final String[] supportedVp9HwCodecPrefixes = |
77 {"OMX.qcom.", "OMX.Exynos." }; | 77 {"OMX.qcom.", "OMX.Exynos." }; |
78 // List of supported HW H.264 decoders. | 78 // List of supported HW H.264 decoders. |
79 private static final String[] supportedH264HwCodecPrefixes = | 79 private static final String[] supportedH264HwCodecPrefixes = |
80 {"OMX.qcom.", "OMX.Intel.", "OMX.Exynos." }; | 80 {"OMX.qcom.", "OMX.Intel.", "OMX.Exynos." }; |
| 81 |
81 // NV12 color format supported by QCOM codec, but not declared in MediaCodec - | 82 // NV12 color format supported by QCOM codec, but not declared in MediaCodec - |
82 // see /hardware/qcom/media/mm-core/inc/OMX_QCOMExtns.h | 83 // see /hardware/qcom/media/mm-core/inc/OMX_QCOMExtns.h |
83 private static final int | 84 private static final int COLOR_QCOM_FORMATYVU420PackedSemiPlanar32m4ka = 0x7FA
30C01; |
84 COLOR_QCOM_FORMATYUV420PackedSemiPlanar32m = 0x7FA30C04; | 85 private static final int COLOR_QCOM_FORMATYVU420PackedSemiPlanar16m4ka = 0x7FA
30C02; |
| 86 private static final int COLOR_QCOM_FORMATYVU420PackedSemiPlanar64x32Tile2m8ka
= 0x7FA30C03; |
| 87 private static final int COLOR_QCOM_FORMATYUV420PackedSemiPlanar32m = 0x7FA30C
04; |
85 // Allowable color formats supported by codec - in order of preference. | 88 // Allowable color formats supported by codec - in order of preference. |
86 private static final List<Integer> supportedColorList = Arrays.asList( | 89 private static final List<Integer> supportedColorList = Arrays.asList( |
87 CodecCapabilities.COLOR_FormatYUV420Planar, | 90 CodecCapabilities.COLOR_FormatYUV420Planar, |
88 CodecCapabilities.COLOR_FormatYUV420SemiPlanar, | 91 CodecCapabilities.COLOR_FormatYUV420SemiPlanar, |
89 CodecCapabilities.COLOR_QCOM_FormatYUV420SemiPlanar, | 92 CodecCapabilities.COLOR_QCOM_FormatYUV420SemiPlanar, |
| 93 COLOR_QCOM_FORMATYVU420PackedSemiPlanar32m4ka, |
| 94 COLOR_QCOM_FORMATYVU420PackedSemiPlanar16m4ka, |
| 95 COLOR_QCOM_FORMATYVU420PackedSemiPlanar64x32Tile2m8ka, |
90 COLOR_QCOM_FORMATYUV420PackedSemiPlanar32m); | 96 COLOR_QCOM_FORMATYUV420PackedSemiPlanar32m); |
| 97 |
91 private int colorFormat; | 98 private int colorFormat; |
92 private int width; | 99 private int width; |
93 private int height; | 100 private int height; |
94 private int stride; | 101 private int stride; |
95 private int sliceHeight; | 102 private int sliceHeight; |
96 private boolean hasDecodedFirstFrame; | 103 private boolean hasDecodedFirstFrame; |
97 private final Queue<TimeStamps> decodeStartTimeMs = new LinkedList<TimeStamps>
(); | 104 private final Queue<TimeStamps> decodeStartTimeMs = new LinkedList<TimeStamps>
(); |
98 private boolean useSurface; | 105 private boolean useSurface; |
99 | 106 |
100 // The below variables are only used when decoding to a Surface. | 107 // The below variables are only used when decoding to a Surface. |
(...skipping 612 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
713 // MediaCodec.CodecException upon codec error. | 720 // MediaCodec.CodecException upon codec error. |
714 private void returnDecodedOutputBuffer(int index) | 721 private void returnDecodedOutputBuffer(int index) |
715 throws IllegalStateException, MediaCodec.CodecException { | 722 throws IllegalStateException, MediaCodec.CodecException { |
716 checkOnMediaCodecThread(); | 723 checkOnMediaCodecThread(); |
717 if (useSurface) { | 724 if (useSurface) { |
718 throw new IllegalStateException("returnDecodedOutputBuffer() called for su
rface decoding."); | 725 throw new IllegalStateException("returnDecodedOutputBuffer() called for su
rface decoding."); |
719 } | 726 } |
720 mediaCodec.releaseOutputBuffer(index, false /* render */); | 727 mediaCodec.releaseOutputBuffer(index, false /* render */); |
721 } | 728 } |
722 } | 729 } |
OLD | NEW |