# HG changeset patch
# User Sagar Kotecha<[email protected]>
# Date 1453711892 -19800
# Mon Jan 25 14:21:32 2016 +0530
# Node ID b55927cec2d00aef0c80dd0866fce0424fb9cc45
# Parent f548abe8eae8fb75513a85d1b09233e706c7b5ba
clean analysis save/load read/write
diff -r f548abe8eae8 -r b55927cec2d0 source/encoder/encoder.cpp
--- a/source/encoder/encoder.cpp Wed Jan 20 18:27:42 2016 +0530
+++ b/source/encoder/encoder.cpp Mon Jan 25 14:21:32 2016 +0530
@@ -1966,31 +1966,24 @@
if (analysis->sliceType == X265_TYPE_IDR || analysis->sliceType ==
X265_TYPE_I)
{
- X265_FREAD(((analysis_intra_data *)analysis->intraData)->depth,
sizeof(uint8_t), analysis->numCUsInFrame * analysis->numPartitions,
m_analysisFile);
- X265_FREAD(((analysis_intra_data *)analysis->intraData)->modes,
sizeof(uint8_t), analysis->numCUsInFrame * analysis->numPartitions,
m_analysisFile);
+ X265_FREAD(((analysis_intra_data *)analysis->intraData)->depth,
sizeof(uint8_t), analysis->numCUsInFrame * analysis->numPartitions,
m_analysisFile);
X265_FREAD(((analysis_intra_data *)analysis->intraData)->partSizes,
sizeof(char), analysis->numCUsInFrame * analysis->numPartitions,
m_analysisFile);
X265_FREAD(((analysis_intra_data *)analysis->intraData)->chromaModes,
sizeof(uint8_t), analysis->numCUsInFrame * analysis->numPartitions,
m_analysisFile);
+ X265_FREAD(((analysis_intra_data *)analysis->intraData)->modes,
sizeof(uint8_t), analysis->numCUsInFrame * analysis->numPartitions,
m_analysisFile);
analysis->sliceType = X265_TYPE_I;
consumedBytes += frameRecordSize;
}
- else if (analysis->sliceType == X265_TYPE_P)
+ else
{
- X265_FREAD(((analysis_inter_data *)analysis->interData)->ref,
sizeof(int32_t), analysis->numCUsInFrame * X265_MAX_PRED_MODE_PER_CTU,
m_analysisFile);
+ int numDir = analysis->sliceType == X265_TYPE_P ? 1 : 2;
X265_FREAD(((analysis_inter_data *)analysis->interData)->depth,
sizeof(uint8_t), analysis->numCUsInFrame * analysis->numPartitions,
m_analysisFile);
X265_FREAD(((analysis_inter_data *)analysis->interData)->modes,
sizeof(uint8_t), analysis->numCUsInFrame * analysis->numPartitions,
m_analysisFile);
+ X265_FREAD(((analysis_inter_data *)analysis->interData)->ref,
sizeof(int32_t), analysis->numCUsInFrame * X265_MAX_PRED_MODE_PER_CTU * numDir,
m_analysisFile);
X265_FREAD(((analysis_inter_data
*)analysis->interData)->bestMergeCand, sizeof(uint32_t),
analysis->numCUsInFrame * CUGeom::MAX_GEOMS, m_analysisFile);
- X265_FREAD(((analysis_inter_data *)analysis->interData)->mv,
sizeof(MV), analysis->numCUsInFrame * X265_MAX_PRED_MODE_PER_CTU,
m_analysisFile);
+ X265_FREAD(((analysis_inter_data *)analysis->interData)->mv,
sizeof(MV), analysis->numCUsInFrame * X265_MAX_PRED_MODE_PER_CTU * numDir,
m_analysisFile);
consumedBytes += frameRecordSize;
- totalConsumedBytes = consumedBytes;
- }
- else
- {
- X265_FREAD(((analysis_inter_data *)analysis->interData)->ref,
sizeof(int32_t), analysis->numCUsInFrame * X265_MAX_PRED_MODE_PER_CTU * 2,
m_analysisFile);
- X265_FREAD(((analysis_inter_data *)analysis->interData)->depth,
sizeof(uint8_t), analysis->numCUsInFrame * analysis->numPartitions,
m_analysisFile);
- X265_FREAD(((analysis_inter_data *)analysis->interData)->modes,
sizeof(uint8_t), analysis->numCUsInFrame * analysis->numPartitions,
m_analysisFile);
- X265_FREAD(((analysis_inter_data
*)analysis->interData)->bestMergeCand, sizeof(uint32_t),
analysis->numCUsInFrame * CUGeom::MAX_GEOMS, m_analysisFile);
- X265_FREAD(((analysis_inter_data *)analysis->interData)->mv,
sizeof(MV), analysis->numCUsInFrame * X265_MAX_PRED_MODE_PER_CTU * 2,
m_analysisFile);
- consumedBytes += frameRecordSize;
+ if (numDir == 1)
+ totalConsumedBytes = consumedBytes;
}
#undef X265_FREAD
}
@@ -2012,19 +2005,13 @@
sizeof(analysis->numCUsInFrame) +
sizeof(analysis->numPartitions) + sizeof(analysis->bScenecut) +
sizeof(analysis->satdCost);
if (analysis->sliceType == X265_TYPE_IDR || analysis->sliceType ==
X265_TYPE_I)
analysis->frameRecordSize += sizeof(uint8_t) * analysis->numCUsInFrame
* analysis->numPartitions * 4;
- else if (analysis->sliceType == X265_TYPE_P)
+ else
{
- analysis->frameRecordSize += sizeof(int32_t) * analysis->numCUsInFrame
* X265_MAX_PRED_MODE_PER_CTU;
+ int numDir = (analysis->sliceType == X265_TYPE_P) ? 1 : 2;
+ analysis->frameRecordSize += sizeof(int32_t) * analysis->numCUsInFrame
* X265_MAX_PRED_MODE_PER_CTU * numDir;
analysis->frameRecordSize += sizeof(uint8_t) * analysis->numCUsInFrame
* analysis->numPartitions * 2;
analysis->frameRecordSize += sizeof(uint32_t) *
analysis->numCUsInFrame * CUGeom::MAX_GEOMS;
- analysis->frameRecordSize += sizeof(MV) * analysis->numCUsInFrame *
X265_MAX_PRED_MODE_PER_CTU;
- }
- else
- {
- analysis->frameRecordSize += sizeof(int32_t) * analysis->numCUsInFrame
* X265_MAX_PRED_MODE_PER_CTU * 2;
- analysis->frameRecordSize += sizeof(uint8_t) * analysis->numCUsInFrame
* analysis->numPartitions * 2;
- analysis->frameRecordSize += sizeof(uint32_t) *
analysis->numCUsInFrame * CUGeom::MAX_GEOMS;
- analysis->frameRecordSize += sizeof(MV) * analysis->numCUsInFrame *
X265_MAX_PRED_MODE_PER_CTU * 2;
+ analysis->frameRecordSize += sizeof(MV) * analysis->numCUsInFrame *
X265_MAX_PRED_MODE_PER_CTU * numDir;
}
X265_FWRITE(&analysis->frameRecordSize, sizeof(uint32_t), 1,
m_analysisFile);
X265_FWRITE(&analysis->poc, sizeof(int), 1, m_analysisFile);
@@ -2037,25 +2024,18 @@
if (analysis->sliceType == X265_TYPE_IDR || analysis->sliceType ==
X265_TYPE_I)
{
X265_FWRITE(((analysis_intra_data*)analysis->intraData)->depth,
sizeof(uint8_t), analysis->numCUsInFrame * analysis->numPartitions,
m_analysisFile);
- X265_FWRITE(((analysis_intra_data*)analysis->intraData)->modes,
sizeof(uint8_t), analysis->numCUsInFrame * analysis->numPartitions,
m_analysisFile);
X265_FWRITE(((analysis_intra_data*)analysis->intraData)->partSizes,
sizeof(char), analysis->numCUsInFrame * analysis->numPartitions,
m_analysisFile);
X265_FWRITE(((analysis_intra_data*)analysis->intraData)->chromaModes,
sizeof(uint8_t), analysis->numCUsInFrame * analysis->numPartitions,
m_analysisFile);
- }
- else if (analysis->sliceType == X265_TYPE_P)
- {
- X265_FWRITE(((analysis_inter_data*)analysis->interData)->ref,
sizeof(int32_t), analysis->numCUsInFrame * X265_MAX_PRED_MODE_PER_CTU,
m_analysisFile);
- X265_FWRITE(((analysis_inter_data*)analysis->interData)->depth,
sizeof(uint8_t), analysis->numCUsInFrame * analysis->numPartitions,
m_analysisFile);
- X265_FWRITE(((analysis_inter_data*)analysis->interData)->modes,
sizeof(uint8_t), analysis->numCUsInFrame * analysis->numPartitions,
m_analysisFile);
-
X265_FWRITE(((analysis_inter_data*)analysis->interData)->bestMergeCand,
sizeof(uint32_t), analysis->numCUsInFrame * CUGeom::MAX_GEOMS, m_analysisFile);
- X265_FWRITE(((analysis_inter_data*)analysis->interData)->mv,
sizeof(MV), analysis->numCUsInFrame * X265_MAX_PRED_MODE_PER_CTU,
m_analysisFile);
+ X265_FWRITE(((analysis_intra_data*)analysis->intraData)->modes,
sizeof(uint8_t), analysis->numCUsInFrame * analysis->numPartitions,
m_analysisFile);
}
else
{
- X265_FWRITE(((analysis_inter_data*)analysis->interData)->ref,
sizeof(int32_t), analysis->numCUsInFrame * X265_MAX_PRED_MODE_PER_CTU * 2,
m_analysisFile);
+ int numDir = analysis->sliceType == X265_TYPE_P ? 1 : 2;
X265_FWRITE(((analysis_inter_data*)analysis->interData)->depth,
sizeof(uint8_t), analysis->numCUsInFrame * analysis->numPartitions,
m_analysisFile);
X265_FWRITE(((analysis_inter_data*)analysis->interData)->modes,
sizeof(uint8_t), analysis->numCUsInFrame * analysis->numPartitions,
m_analysisFile);
+ X265_FWRITE(((analysis_inter_data*)analysis->interData)->ref,
sizeof(int32_t), analysis->numCUsInFrame * X265_MAX_PRED_MODE_PER_CTU * numDir,
m_analysisFile);
X265_FWRITE(((analysis_inter_data*)analysis->interData)->bestMergeCand,
sizeof(uint32_t), analysis->numCUsInFrame * CUGeom::MAX_GEOMS, m_analysisFile);
- X265_FWRITE(((analysis_inter_data*)analysis->interData)->mv,
sizeof(MV), analysis->numCUsInFrame * X265_MAX_PRED_MODE_PER_CTU * 2,
m_analysisFile);
+ X265_FWRITE(((analysis_inter_data*)analysis->interData)->mv,
sizeof(MV), analysis->numCUsInFrame * X265_MAX_PRED_MODE_PER_CTU * numDir,
m_analysisFile);
}
#undef X265_FWRITE
}
_______________________________________________
x265-devel mailing list
[email protected]
https://mailman.videolan.org/listinfo/x265-devel