From 919d64b5a059719d0678e907b54ee1070b673664 Mon Sep 17 00:00:00 2001 From: rigaya Date: Tue, 13 Aug 2024 11:59:21 +0900 Subject: [PATCH] =?UTF-8?q?=E8=AD=A6=E5=91=8A=E5=AF=BE=E7=AD=96=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- NVEnc/NVEnc_readme.txt | 4 ++++ NVEncCore/rgy_input_avcodec.cpp | 8 ++++---- NVEncCore/rgy_output.cpp | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/NVEnc/NVEnc_readme.txt b/NVEnc/NVEnc_readme.txt index 502838a1..0ffb7a63 100644 --- a/NVEnc/NVEnc_readme.txt +++ b/NVEnc/NVEnc_readme.txt @@ -215,6 +215,10 @@ NVIDIA グラフィックドライバ 551.23 今後の更新で設定ファイルの互換性がなくなるかもしれません。 【メモ】 +2024.08.13 (7.64) +- --dhdr10-info copyと--dolby-vision-rpu copyを併用すると、--dhdr10-info copyが効かなくなっていた問題を修正。 +- alphaチャンネルのモードを指定するオプションを追加。 + 2024.08.12 (7.63) - HEVC+alphaエンコード時に、入力が高ビット深度だと透明度の位置がずれてしまう問題を修正。 - alphaチャンネルに割り当てるビットレートの割合を指定するオプションを追加。(--alpha-bitrate-ratio) diff --git a/NVEncCore/rgy_input_avcodec.cpp b/NVEncCore/rgy_input_avcodec.cpp index 4ceae65c..4953caa5 100644 --- a/NVEncCore/rgy_input_avcodec.cpp +++ b/NVEncCore/rgy_input_avcodec.cpp @@ -709,7 +709,7 @@ void RGYInputAvcodec::hevcMp42Annexb(AVPacket *pkt) { m_hevcMp42AnnexbBuffer.insert(m_hevcMp42AnnexbBuffer.end(), SC, SC + 4); m_hevcMp42AnnexbBuffer.insert(m_hevcMp42AnnexbBuffer.end(), ptr, ptr + size); ptr += size; } - if (pkt->buf->size < (int)m_hevcMp42AnnexbBuffer.size() + AV_INPUT_BUFFER_PADDING_SIZE) { + if (pkt->buf->size < m_hevcMp42AnnexbBuffer.size() + AV_INPUT_BUFFER_PADDING_SIZE) { av_grow_packet(pkt, (int)m_hevcMp42AnnexbBuffer.size() + AV_INPUT_BUFFER_PADDING_SIZE); } memcpy(pkt->data, m_hevcMp42AnnexbBuffer.data(), m_hevcMp42AnnexbBuffer.size()); @@ -1279,7 +1279,7 @@ RGY_ERR RGYInputAvcodec::parseHDR10plusDOVIRpuHEVC(AVPacket *pkt, const bool hdr continue; } const uint8_t *ptr = nal_unit.ptr; - int header_size = 0; + size_t header_size = 0; //nal header if (ptr[0] == 0x00 && ptr[1] == 0x00 @@ -1344,7 +1344,7 @@ RGY_ERR RGYInputAvcodec::parseHDR10plusDOVIRpuAV1(AVPacket *pkt, const bool hdr1 const uint8_t *const start_metadata = start_obu + 1 /*metadata type*/; int metadata_size = av1_unit->unit_data.size() - av1_unit->obu_offset - 1/*metadata type*/; if (hdr10plus - && metadata_size > sizeof(av1_itut_t35_header_hdr10plus) + && metadata_size > (int)sizeof(av1_itut_t35_header_hdr10plus) && memcmp(start_metadata, av1_itut_t35_header_hdr10plus, sizeof(av1_itut_t35_header_hdr10plus)) == 0) { if (fin_pos[-1] == 0x80) { metadata_size--; @@ -1355,7 +1355,7 @@ RGY_ERR RGYInputAvcodec::parseHDR10plusDOVIRpuAV1(AVPacket *pkt, const bool hdr1 } } if (doviRpu - && metadata_size > sizeof(av1_itut_t35_header_dovirpu) + && metadata_size > (int)sizeof(av1_itut_t35_header_dovirpu) && memcmp(start_metadata, av1_itut_t35_header_dovirpu, sizeof(av1_itut_t35_header_dovirpu)) == 0) { if (fin_pos[-1] == 0x80) { metadata_size--; diff --git a/NVEncCore/rgy_output.cpp b/NVEncCore/rgy_output.cpp index 9be78635..88bba6e8 100644 --- a/NVEncCore/rgy_output.cpp +++ b/NVEncCore/rgy_output.cpp @@ -484,7 +484,7 @@ RGY_ERR RGYOutput::InsertMetadata(RGYBitstream *bitstream, std::vectorappend(av1_units[i]->unit_data.data(), av1_units[i]->unit_data.size()); if (av1_units[i]->type == OBU_TEMPORAL_DELIMITER || av1_units[i]->type == OBU_SEQUENCE_HEADER) { - if (i + 1 < (int)av1_units.size() + if (i + 1 < av1_units.size() && (av1_units[i + 1]->type != OBU_TEMPORAL_DELIMITER && av1_units[i + 1]->type != OBU_SEQUENCE_HEADER)) { for (auto& metadata : metadataList) { if (!metadata->written && !metadata->appendix) {