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);
|
"header: %d.\n", err);
|
||||||
goto fail;
|
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];
|
d3d12_refs.NumTexture2Ds = base_pic->nb_refs[0] + base_pic->nb_refs[1];
|
||||||
|
Reference in New Issue
Block a user