On 7/1/2021 11:27 AM, Andreas Rheinhardt wrote:
James Almer:
From: Matthieu Patou <mpa...@fb.com>

Suggested-by: ffm...@fb.com
Signed-off-by: James Almer <jamr...@gmail.com>
---
  libavformat/flv.h    |  1 +
  libavformat/flvdec.c | 14 ++++++++++++--
  2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/libavformat/flv.h b/libavformat/flv.h
index 3571b90279..7a026d3217 100644
--- a/libavformat/flv.h
+++ b/libavformat/flv.h
@@ -110,6 +110,7 @@ enum {
      FLV_CODECID_H264    = 7,
      FLV_CODECID_REALH263= 8,
      FLV_CODECID_MPEG4   = 9,
+    FLV_CODECID_H265    = 10,
  };

Is there an official source for these numbers?

Apparently no. Neither does REALH263 or MPEG4 as far as i can see. But if there are files out there that can be demuxed with this change, as long as we don't support creating them, it should be fine.


enum {
diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c
index 60d1a5c654..ba60d71196 100644
--- a/libavformat/flvdec.c
+++ b/libavformat/flvdec.c
@@ -321,6 +321,8 @@ static int flv_same_video_codec(AVCodecParameters *vpar, 
int flags)
          return vpar->codec_id == AV_CODEC_ID_VP6A;
      case FLV_CODECID_H264:
          return vpar->codec_id == AV_CODEC_ID_H264;
+    case FLV_CODECID_H265:
+        return vpar->codec_id == AV_CODEC_ID_H265;
      default:
          return vpar->codec_tag == flv_codecid;
      }
@@ -366,6 +368,11 @@ static int flv_set_video_codec(AVFormatContext *s, 
AVStream *vstream,
          vstream->internal->need_parsing = AVSTREAM_PARSE_HEADERS;
          ret = 3;     // not 4, reading packet type will consume one byte
          break;
+    case FLV_CODECID_H265:
+        par->codec_id = AV_CODEC_ID_H265;
+        vstream->internal->need_parsing = AVSTREAM_PARSE_HEADERS;
+        ret = 3;     // not 4, reading packet type will consume one byte
+        break;
      case FLV_CODECID_MPEG4:
          par->codec_id = AV_CODEC_ID_MPEG4;
          ret = 3;
@@ -1241,6 +1248,7 @@ retry_duration:
if (st->codecpar->codec_id == AV_CODEC_ID_AAC ||
          st->codecpar->codec_id == AV_CODEC_ID_H264 ||
+        st->codecpar->codec_id == AV_CODEC_ID_H265 ||
          st->codecpar->codec_id == AV_CODEC_ID_MPEG4) {
          int type = avio_r8(s->pb);
          size--;
@@ -1250,7 +1258,9 @@ retry_duration:
              goto leave;
          }
- if (st->codecpar->codec_id == AV_CODEC_ID_H264 || st->codecpar->codec_id == AV_CODEC_ID_MPEG4) {
+        if (st->codecpar->codec_id == AV_CODEC_ID_H264 ||
+            st->codecpar->codec_id == AV_CODEC_ID_H265 ||
+            st->codecpar->codec_id == AV_CODEC_ID_MPEG4) {
              // sign extension
              int32_t cts = (avio_rb24(s->pb) + 0xff800000) ^ 0xff800000;
              pts = av_sat_add64(dts, cts);
@@ -1266,7 +1276,7 @@ retry_duration:
              }
          }
          if (type == 0 && (!st->codecpar->extradata || st->codecpar->codec_id 
== AV_CODEC_ID_AAC ||
-            st->codecpar->codec_id == AV_CODEC_ID_H264)) {
+            st->codecpar->codec_id == AV_CODEC_ID_H264 || 
st->codecpar->codec_id == AV_CODEC_ID_H265)) {
              AVDictionaryEntry *t;
if (st->codecpar->extradata) {


_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to