uint8_t *NextOut;\r
uint8_t *Input;\r
uint8_t *Output;\r
+ size_t TotalOut;\r
size_t OutSize;\r
uint32_t SizeHint;\r
BROTLI_BOOL IsOk;\r
IsEof = !HasMoreInput(InputFileHandle);\r
}\r
\r
- if (!BrotliEncoderCompressStream(EncodeState,\r
- IsEof ? BROTLI_OPERATION_FINISH : BROTLI_OPERATION_PROCESS,\r
- &AvailableIn, &NextIn, &AvailableOut, &NextOut, NULL)) {\r
- printf("Failed to compress data [%s]\n", InputFile);\r
- IsOk = BROTLI_FALSE;\r
- goto Finish;\r
- }\r
- if (AvailableOut == 0) {\r
- OutSize = (size_t)(NextOut - Output);\r
- if (OutSize > 0) {\r
- fwrite(Output, 1, OutSize, OutputFileHandle);\r
- if (ferror(OutputFileHandle)) {\r
- printf("Failed to write output [%s]\n", OutputFile);\r
+ if (!IsEof){\r
+ do{\r
+ if (!BrotliEncoderCompressStream(EncodeState,\r
+ BROTLI_OPERATION_FLUSH,\r
+ &AvailableIn, &NextIn, &AvailableOut, &NextOut, &TotalOut)) {\r
+ printf("Failed to compress data [%s]\n", InputFile);\r
IsOk = BROTLI_FALSE;\r
goto Finish;\r
}\r
+ OutSize = (size_t)(NextOut - Output);\r
+ if (OutSize > 0) {\r
+ fwrite(Output, 1, OutSize, OutputFileHandle);\r
+ if (ferror(OutputFileHandle)) {\r
+ printf("Failed to write output [%s]\n", OutputFile);\r
+ IsOk = BROTLI_FALSE;\r
+ goto Finish;\r
+ }\r
+ }\r
+ NextOut = Output;\r
+ AvailableOut = kFileBufferSize;\r
}\r
- AvailableOut = kFileBufferSize;\r
- NextOut = Output;\r
+ while (AvailableIn > 0 || BrotliEncoderHasMoreOutput(EncodeState));\r
}\r
- if (BrotliEncoderIsFinished(EncodeState)) {\r
- OutSize = (size_t)(NextOut - Output);\r
- if (OutSize > 0) {\r
- fwrite(Output, 1, OutSize, OutputFileHandle);\r
- if (ferror(OutputFileHandle)) {\r
- printf("Failed to write output [%s]\n", OutputFile);\r
+ else{\r
+ do{\r
+ if (!BrotliEncoderCompressStream(EncodeState,\r
+ BROTLI_OPERATION_FINISH,\r
+ &AvailableIn, &NextIn, &AvailableOut, &NextOut, &TotalOut)) {\r
+ printf("Failed to compress data [%s]\n", InputFile);\r
IsOk = BROTLI_FALSE;\r
goto Finish;\r
}\r
- AvailableOut = 0;\r
+ OutSize = (size_t)(NextOut - Output);\r
+ if (OutSize > 0) {\r
+ fwrite(Output, 1, OutSize, OutputFileHandle);\r
+ if (ferror(OutputFileHandle)) {\r
+ printf("Failed to write output [%s]\n", OutputFile);\r
+ IsOk = BROTLI_FALSE;\r
+ goto Finish;\r
+ }\r
+ }\r
+ NextOut = Output;\r
+ AvailableOut = kFileBufferSize;\r
}\r
+ while (AvailableIn > 0 || BrotliEncoderHasMoreOutput(EncodeState));\r
}\r
- if (IsEof) {\r
+ if (BrotliEncoderIsFinished(EncodeState)){\r
break;\r
}\r
}\r