From 5a3a69326db61e4e5b4eecf65a670f717bc66027 Mon Sep 17 00:00:00 2001 From: youngju Date: Sun, 26 Apr 2020 11:46:57 +0900 Subject: [PATCH] add av.HEVC, av.JPEG --- .vscode/launch.json | 17 +++++++++++++++++ core/media/av/av.go | 13 +++++++++++++ core/media/ffmpeg/video-decoder.go | 2 ++ core/media/h264parser/parser.go | 6 +++--- 4 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 .vscode/launch.json diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..c23774c --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,17 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Launch", + "type": "go", + "request": "launch", + "mode": "auto", + "program": "${fileDirname}", + "env": {}, + "args": [] + } + ] +} \ No newline at end of file diff --git a/core/media/av/av.go b/core/media/av/av.go index 9c45e84..4521ae0 100644 --- a/core/media/av/av.go +++ b/core/media/av/av.go @@ -135,6 +135,7 @@ var ( // define video H264 = MakeVideoCodecType(avCodecTypeMagic + 1) JPEG = MakeVideoCodecType(avCodecTypeMagic + 2) + HEVC = MakeVideoCodecType(avCodecTypeMagic + 3) // define audio AAC = MakeAudioCodecType(avCodecTypeMagic + 1) @@ -154,6 +155,8 @@ func (ctype CodecType) String() string { return "H264" case JPEG: return "JPEG" + case HEVC: + return "HEVC" // from audio case AAC: @@ -176,6 +179,8 @@ func (ctype CodecType) CodecName() string { return "h264" case JPEG: return "jpeg" + case HEVC: + return "hevc" // from audio case AAC: @@ -238,6 +243,14 @@ type H264VideoCodecData interface { PPS() []byte } +// H265VideoCodecData for h264 info +type H265VideoCodecData interface { + VideoCodecData + VPS() []byte + SPS() []byte + PPS() []byte +} + // AudioCodecData AudioCodecData type AudioCodecData interface { CodecData diff --git a/core/media/ffmpeg/video-decoder.go b/core/media/ffmpeg/video-decoder.go index aac17c3..fdf598e 100644 --- a/core/media/ffmpeg/video-decoder.go +++ b/core/media/ffmpeg/video-decoder.go @@ -61,6 +61,8 @@ func NewDecoder(codecType av.CodecType) (*VideoDecoder, error) { id = C.AV_CODEC_ID_H264 case av.JPEG: id = C.AV_CODEC_ID_JPEG + case av.HEVC: + id = C.AV_CODEC_ID_HEVC default: return nil, fmt.Errorf("invalid codec type: %v", codecType) } diff --git a/core/media/h264parser/parser.go b/core/media/h264parser/parser.go index d439996..f0f4ac5 100644 --- a/core/media/h264parser/parser.go +++ b/core/media/h264parser/parser.go @@ -4,9 +4,9 @@ import ( "bytes" "fmt" - "../av" - "../utils/bits" - "../utils/bits/pio" + "github.com/Youngju-Heo/gomedia/core/media/av" + "github.com/Youngju-Heo/gomedia/core/media/utils/bits" + "github.com/Youngju-Heo/gomedia/core/media/utils/bits/pio" ) const (