2424
2525#include " sourcefield.h"
2626
27+ #include < algorithm>
28+
2729#include " sourcevideo.h"
2830
31+ // Fill a SourceField's data with a colour
32+ static void fillField (SourceField &field, quint16 colour)
33+ {
34+ quint16 *start = reinterpret_cast <quint16 *>(field.data .data ());
35+ quint16 *end = start + (field.data .size () / 2 );
36+ std::fill (start, end, colour);
37+ }
38+
2939void SourceField::loadFields (SourceVideo &sourceVideo, LdDecodeMetaData &ldDecodeMetaData,
3040 qint32 firstFrameNumber, qint32 numFrames,
3141 qint32 lookBehindFrames, qint32 lookAheadFrames,
@@ -52,15 +62,19 @@ void SourceField::loadFields(SourceVideo &sourceVideo, LdDecodeMetaData &ldDecod
5262
5363 // Fetch the input metadata
5464 fields[i].field = ldDecodeMetaData.getField (firstFieldNumber);
55- fields[i].data = sourceVideo.getVideoField (firstFieldNumber);
5665 fields[i + 1 ].field = ldDecodeMetaData.getField (secondFieldNumber);
57- fields[i + 1 ].data = sourceVideo.getVideoField (secondFieldNumber);
5866
5967 if (useBlankFrame) {
6068 // Fill both fields with black
6169 const quint16 black = ldDecodeMetaData.getVideoParameters ().black16bIre ;
62- fields[i].data .fill (black);
63- fields[i + 1 ].data .fill (black);
70+ fields[i].data .resize (sourceVideo.getFieldByteLength ());
71+ fields[i + 1 ].data .resize (sourceVideo.getFieldByteLength ());
72+ fillField (fields[i], black);
73+ fillField (fields[i + 1 ], black);
74+ } else {
75+ // Fetch the input fields
76+ fields[i].data = sourceVideo.getVideoField (firstFieldNumber);
77+ fields[i + 1 ].data = sourceVideo.getVideoField (secondFieldNumber);
6478 }
6579
6680 frameNumber++;
0 commit comments