You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-04 22:03:09 +02:00
avcodec/d3d12va_encode: don't write garbage when there is no header
When codec->write_sequence_header is not defined, bit_len was undefined, and while data bufer was zeroed we could just overread it. Do nothing when we don't have anything to write. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
This commit is contained in:
@ -299,21 +299,20 @@ static int d3d12va_encode_issue(AVCodecContext *avctx,
|
||||
"header: %d.\n", err);
|
||||
goto fail;
|
||||
}
|
||||
pic->header_size = (int)bit_len / 8;
|
||||
pic->aligned_header_size = pic->header_size % ctx->req.CompressedBitstreamBufferAccessAlignment ?
|
||||
FFALIGN(pic->header_size, ctx->req.CompressedBitstreamBufferAccessAlignment) :
|
||||
pic->header_size;
|
||||
|
||||
hr = ID3D12Resource_Map(pic->output_buffer, 0, NULL, (void **)&ptr);
|
||||
if (FAILED(hr)) {
|
||||
err = AVERROR_UNKNOWN;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
memcpy(ptr, data, pic->aligned_header_size);
|
||||
ID3D12Resource_Unmap(pic->output_buffer, 0, NULL);
|
||||
}
|
||||
|
||||
pic->header_size = (int)bit_len / 8;
|
||||
pic->aligned_header_size = pic->header_size % ctx->req.CompressedBitstreamBufferAccessAlignment ?
|
||||
FFALIGN(pic->header_size, ctx->req.CompressedBitstreamBufferAccessAlignment) :
|
||||
pic->header_size;
|
||||
|
||||
hr = ID3D12Resource_Map(pic->output_buffer, 0, NULL, (void **)&ptr);
|
||||
if (FAILED(hr)) {
|
||||
err = AVERROR_UNKNOWN;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
memcpy(ptr, data, pic->aligned_header_size);
|
||||
ID3D12Resource_Unmap(pic->output_buffer, 0, NULL);
|
||||
}
|
||||
|
||||
d3d12_refs.NumTexture2Ds = base_pic->nb_refs[0] + base_pic->nb_refs[1];
|
||||
|
Reference in New Issue
Block a user