/*
* Copyright (C) 2016 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.google.android.exoplayer2.extractor.mkv;
import android.support.annotation.IntDef;
import android.util.Log;
import android.util.SparseArray;
import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.ParserException;
import com.google.android.exoplayer2.drm.DrmInitData;
import com.google.android.exoplayer2.drm.DrmInitData.SchemeData;
import com.google.android.exoplayer2.extractor.ChunkIndex;
import com.google.android.exoplayer2.extractor.Extractor;
import com.google.android.exoplayer2.extractor.ExtractorInput;
import com.google.android.exoplayer2.extractor.ExtractorOutput;
import com.google.android.exoplayer2.extractor.ExtractorsFactory;
import com.google.android.exoplayer2.extractor.MpegAudioHeader;
import com.google.android.exoplayer2.extractor.PositionHolder;
import com.google.android.exoplayer2.extractor.SeekMap;
import com.google.android.exoplayer2.extractor.TrackOutput;
import com.google.android.exoplayer2.util.LongArray;
import com.google.android.exoplayer2.util.MimeTypes;
import com.google.android.exoplayer2.util.NalUnitUtil;
import com.google.android.exoplayer2.util.ParsableByteArray;
import com.google.android.exoplayer2.util.Util;
import com.google.android.exoplayer2.video.AvcConfig;
import com.google.android.exoplayer2.video.ColorInfo;
import com.google.android.exoplayer2.video.HevcConfig;
import java.io.IOException;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
import java.util.UUID;
/**
* Extracts data from a Matroska or WebM file.
*/
public final class MatroskaExtractor implements Extractor {
/**
* Factory for {@link MatroskaExtractor} instances.
*/
public static final ExtractorsFactory FACTORY = new ExtractorsFactory() {
@Override
public Extractor[] createExtractors() {
return new Extractor[] {new MatroskaExtractor()};
}
};
/**
* Flags controlling the behavior of the extractor.
*/
@Retention(RetentionPolicy.SOURCE)
@IntDef(flag = true, value = {FLAG_DISABLE_SEEK_FOR_CUES})
public @interface Flags {}
/**
* Flag to disable seeking for cues.
* <p>
* Normally (i.e. when this flag is not set) the extractor will seek to the cues element if its
* position is specified in the seek head and if it's after the first cluster. Setting this flag
* disables seeking to the cues element. If the cues element is after the first cluster then the
* media is treated as being unseekable.
*/
public static final int FLAG_DISABLE_SEEK_FOR_CUES = 1;
private static final String TAG = "MatroskaExtractor";
private static final int UNSET_ENTRY_ID = -1;
private static final int BLOCK_STATE_START = 0;
private static final int BLOCK_STATE_HEADER = 1;
private static final int BLOCK_STATE_DATA = 2;
private static final String DOC_TYPE_MATROSKA = "matroska";
private static final String DOC_TYPE_WEBM = "webm";
private static final String CODEC_ID_VP8 = "V_VP8";
private static final String CODEC_ID_VP9 = "V_VP9";
private static final String CODEC_ID_MPEG2 = "V_MPEG2";
private static final String CODEC_ID_MPEG4_SP = "V_MPEG4/ISO/SP";
private static final String CODEC_ID_MPEG4_ASP = "V_MPEG4/ISO/ASP";
private static final String CODEC_ID_MPEG4_AP = "V_MPEG4/ISO/AP";
private static final String CODEC_ID_H264 = "V_MPEG4/ISO/AVC";
private static final String CODEC_ID_H265 = "V_MPEGH/ISO/HEVC";
private static final String CODEC_ID_FOURCC = "V_MS/VFW/FOURCC";
private static final String CODEC_ID_THEORA = "V_THEORA";
private static final String CODEC_ID_VORBIS = "A_VORBIS";
private static final String CODEC_ID_OPUS = "A_OPUS";
private static final String CODEC_ID_AAC = "A_AAC";
private static final String CODEC_ID_MP2 = "A_MPEG/L2";
private static final String CODEC_ID_MP3 = "A_MPEG/L3";
private static final String CODEC_ID_AC3 = "A_AC3";
private static final String CODEC_ID_E_AC3 = "A_EAC3";
private static final String CODEC_ID_TRUEHD = "A_TRUEHD";
private static final String CODEC_ID_DTS = "A_DTS";
private static final String CODEC_ID_DTS_EXPRESS = "A_DTS/EXPRESS";
private static final String CODEC_ID_DTS_LOSSLESS = "A_DTS/LOSSLESS";
private static final String CODEC_ID_FLAC = "A_FLAC";
private static final String CODEC_ID_ACM = "A_MS/ACM";
private static final String CODEC_ID_PCM_INT_LIT = "A_PCM/INT/LIT";
private static final String CODEC_ID_SUBRIP = "S_TEXT/UTF8";
private static final String CODEC_ID_ASS = "S_TEXT/ASS";
private static final String CODEC_ID_VOBSUB = "S_VOBSUB";
private static final String CODEC_ID_PGS = "S_HDMV/PGS";
private static final String CODEC_ID_DVBSUB = "S_DVBSUB";
private static final int VORBIS_MAX_INPUT_SIZE = 8192;
private static final int OPUS_MAX_INPUT_SIZE = 5760;
private static final int ENCRYPTION_IV_SIZE = 8;
private static final int TRACK_TYPE_AUDIO = 2;
private static final int ID_EBML = 0x1A45DFA3;
private static final int ID_EBML_READ_VERSION = 0x42F7;
private static final int ID_DOC_TYPE = 0x4282;
private static final int ID_DOC_TYPE_READ_VERSION = 0x4285;
private static final int ID_SEGMENT = 0x18538067;
private static final int ID_SEGMENT_INFO = 0x1549A966;
private static final int ID_SEEK_HEAD = 0x114D9B74;
private static final int ID_SEEK = 0x4DBB;
private static final int ID_SEEK_ID = 0x53AB;
private static final int ID_SEEK_POSITION = 0x53AC;
private static final int ID_INFO = 0x1549A966;
private static final int ID_TIMECODE_SCALE = 0x2AD7B1;
private static final int ID_DURATION = 0x4489;
private static final int ID_CLUSTER = 0x1F43B675;
private static final int ID_TIME_CODE = 0xE7;
private static final int ID_SIMPLE_BLOCK = 0xA3;
private static final int ID_BLOCK_GROUP = 0xA0;
private static final int ID_BLOCK = 0xA1;
private static final int ID_BLOCK_DURATION = 0x9B;
private static final int ID_REFERENCE_BLOCK = 0xFB;
private static final int ID_TRACKS = 0x1654AE6B;
private static final int ID_TRACK_ENTRY = 0xAE;
private static final int ID_TRACK_NUMBER = 0xD7;
private static final int ID_TRACK_TYPE = 0x83;
private static final int ID_FLAG_DEFAULT = 0x88;
private static final int ID_FLAG_FORCED = 0x55AA;
private static final int ID_DEFAULT_DURATION = 0x23E383;
private static final int ID_CODEC_ID = 0x86;
private static final int ID_CODEC_PRIVATE = 0x63A2;
private static final int ID_CODEC_DELAY = 0x56AA;
private static final int ID_SEEK_PRE_ROLL = 0x56BB;
private static final int ID_VIDEO = 0xE0;
private static final int ID_PIXEL_WIDTH = 0xB0;
private static final int ID_PIXEL_HEIGHT = 0xBA;
private static final int ID_DISPLAY_WIDTH = 0x54B0;
private static final int ID_DISPLAY_HEIGHT = 0x54BA;
private static final int ID_DISPLAY_UNIT = 0x54B2;
private static final int ID_AUDIO = 0xE1;
private static final int ID_CHANNELS = 0x9F;
private static final int ID_AUDIO_BIT_DEPTH = 0x6264;
private static final int ID_SAMPLING_FREQUENCY = 0xB5;
private static final int ID_CONTENT_ENCODINGS = 0x6D80;
private static final int ID_CONTENT_ENCODING = 0x6240;
private static final int ID_CONTENT_
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
ExoPlayer 使用GLSurfaceView播放视频 (576个子文件)
.classpath 475B
android-support-v4.jar 1.36MB
MatroskaExtractor.java 78KB
ExoPlayerImplInternal.java 66KB
AudioTrack.java 66KB
AtomParsers.java 55KB
FragmentedMp4Extractor.java 54KB
DefaultTrackSelector.java 50KB
MediaCodecRenderer.java 49KB
Util.java 46KB
Cea708Decoder.java 45KB
MediaCodecVideoRenderer.java 41KB
DashManifestParser.java 39KB
PlaybackControlView.java 38KB
DvbParser.java 36KB
MappingTrackSelector.java 35KB
DashMediaSource.java 35KB
SimpleExoPlayerView.java 33KB
HlsSampleStreamWrapper.java 31KB
Timeline.java 31KB
Format.java 30KB
SimpleExoPlayer.java 28KB
Id3Decoder.java 28KB
Cea608Decoder.java 28KB
ExtractorMediaPeriod.java 27KB
C.java 27KB
MediaCodecUtil.java 27KB
SampleQueue.java 25KB
SsManifestParser.java 25KB
DefaultHttpDataSource.java 25KB
DefaultDrmSessionManager.java 24KB
PlayerActivity.java 24KB
SimpleDecoderAudioRenderer.java 23KB
HlsPlaylistTracker.java 23KB
TtmlDecoder.java 22KB
DynamicConcatenatingMediaSource.java 22KB
DefaultDashChunkSource.java 22KB
DefaultTimeBar.java 21KB
TsExtractor.java 21KB
HlsPlaylistParser.java 21KB
SampleMetadataQueue.java 20KB
H264Reader.java 20KB
H265Reader.java 20KB
Mp4Extractor.java 20KB
NalUnitUtil.java 19KB
ChunkSampleStream.java 19KB
Sonic.java 19KB
WebvttCueParser.java 18KB
EventLogger.java 18KB
MediaCodecAudioRenderer.java 18KB
DashMediaPeriod.java 17KB
Mp3Extractor.java 17KB
HlsChunkSource.java 17KB
VorbisUtil.java 17KB
HlsMediaChunk.java 17KB
ExoPlayerImpl.java 16KB
SubtitlePainter.java 16KB
SsMediaSource.java 16KB
AdaptiveMediaSourceEventListener.java 15KB
ParsableByteArray.java 15KB
HlsMediaPeriod.java 15KB
MediaPeriodInfoSequence.java 15KB
MetadataUtil.java 15KB
CacheDataSource.java 14KB
DefaultRenderersFactory.java 14KB
Player.java 14KB
SegmentBase.java 14KB
Loader.java 14KB
MediaCodecInfo.java 13KB
Atom.java 13KB
Representation.java 13KB
PsExtractor.java 12KB
SimpleCache.java 12KB
CachedContentIndex.java 12KB
DefaultOggSeeker.java 12KB
AdtsReader.java 12KB
TrackSelectionHelper.java 12KB
CssParser.java 11KB
ExtractorInput.java 11KB
AdaptiveTrackSelection.java 11KB
DummySurface.java 11KB
ExoPlayer.java 11KB
MimeTypes.java 11KB
TtmlNode.java 11KB
TextRenderer.java 11KB
Cue.java 11KB
ColorParser.java 11KB
CodecSpecificDataUtil.java 11KB
DashUtil.java 11KB
VideoFrameReleaseTimeHelper.java 10KB
ClippingMediaPeriod.java 10KB
CacheUtil.java 10KB
HttpDataSource.java 10KB
HlsMediaPlaylist.java 10KB
H262Reader.java 10KB
UriUtil.java 10KB
Tx3gDecoder.java 10KB
DrmInitData.java 10KB
Ac3Util.java 10KB
Renderer.java 10KB
共 576 条
- 1
- 2
- 3
- 4
- 5
- 6
资源评论
- 百鑫2018-01-29不要下载根本都跑步起来
- 木林森.Y2017-11-27哈哈哈哈哈
zhk7653
- 粉丝: 0
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功