various: conformed frame usages to respect stride

This commit is contained in:
itsmattkc
2020-04-22 15:54:47 +10:00
parent 0a9ad8f235
commit c9e797abdf
15 changed files with 46 additions and 36 deletions
+1 -1
View File
@@ -324,7 +324,7 @@ FramePtr FFmpegDecoder::RetrieveVideo(const rational &timecode, const int &divid
// Convert frame to RGB/A for the rest of the pipeline
uint8_t* output_data = reinterpret_cast<uint8_t*>(copy->data());
int output_linesize = copy->width() * PixelFormat::BytesPerPixel(native_pix_fmt_);
int output_linesize = copy->linesize_bytes();
sws_scale(scale_ctx_,
input_data,
+1 -1
View File
@@ -254,7 +254,7 @@ void FFmpegEncoder::WriteInternal(FramePtr frame)
// Use swscale context to convert formats/linesizes
input_data = frame->const_data();
input_linesize = frame->width() * PixelFormat::BytesPerPixel(video_conversion_fmt_);
input_linesize = frame->linesize_bytes();
error_code = sws_scale(video_scale_ctx_,
reinterpret_cast<const uint8_t**>(&input_data),
&input_linesize,
+7 -7
View File
@@ -50,11 +50,16 @@ void Frame::set_video_params(const VideoRenderingParams &params)
linesize_ = qCeil(static_cast<double>(params.width()) / 16.0) * 16;
}
int Frame::linesize() const
int Frame::linesize_pixels() const
{
return linesize_;
}
int Frame::linesize_bytes() const
{
return linesize_pixels() * PixelFormat::BytesPerPixel(params_.format());
}
const int &Frame::width() const
{
return params_.width();
@@ -76,7 +81,7 @@ Color Frame::get_pixel(int x, int y) const
return Color();
}
int pixel_index = y * width() + x;
int pixel_index = y * linesize_pixels() + x;
int byte_offset = PixelFormat::GetBufferSize(video_params().format(), pixel_index, 1);
@@ -118,11 +123,6 @@ void Frame::set_native_timestamp(const int64_t &timestamp)
native_timestamp_ = timestamp;
}
QByteArray Frame::ToByteArray() const
{
return data_;
}
char *Frame::data()
{
return data_.data();
+2 -8
View File
@@ -47,7 +47,8 @@ public:
const VideoRenderingParams& video_params() const;
void set_video_params(const VideoRenderingParams& params);
int linesize() const;
int linesize_pixels() const;
int linesize_bytes() const;
const int& width() const;
const int& height() const;
const PixelFormat::Format& format() const;
@@ -69,13 +70,6 @@ public:
const int64_t& native_timestamp();
void set_native_timestamp(const int64_t& timestamp);
/**
* @brief Returns a copy of the data in this frame as a QByteArray
*
* Will always do a deep copy. If you want to affect the data directly, use data() instead.
*/
QByteArray ToByteArray() const;
/**
* @brief Get the data buffer of this frame
*/