vpxdec: restoring old md5 behavior for y4m files.
Fix of https://code.google.com/p/webm/issues/detail?id=698 issue. Change-Id: I7a92d91481dbbae28d8953f146e9faafdcd7a310
This commit is contained in:
parent
f9f936b82f
commit
5260b39e5f
33
vpxdec.c
33
vpxdec.c
@ -816,17 +816,34 @@ int main_loop(int argc, const char **argv_) {
|
||||
}
|
||||
|
||||
if (single_file) {
|
||||
if (use_y4m) {
|
||||
char buf[Y4M_BUFFER_SIZE] = {0};
|
||||
size_t len = 0;
|
||||
if (frame_out == 1) {
|
||||
// Y4M file header
|
||||
len = y4m_write_file_header(buf, sizeof(buf),
|
||||
vpx_input_ctx.width,
|
||||
vpx_input_ctx.height,
|
||||
&vpx_input_ctx.framerate, img->fmt);
|
||||
if (do_md5) {
|
||||
MD5Update(&md5_ctx, (md5byte *)buf, len);
|
||||
} else {
|
||||
fputs(buf, outfile);
|
||||
}
|
||||
}
|
||||
|
||||
// Y4M frame header
|
||||
len = y4m_write_frame_header(buf, sizeof(buf));
|
||||
if (do_md5) {
|
||||
MD5Update(&md5_ctx, (md5byte *)buf, len);
|
||||
} else {
|
||||
fputs(buf, outfile);
|
||||
}
|
||||
}
|
||||
|
||||
if (do_md5) {
|
||||
update_image_md5(img, planes, &md5_ctx);
|
||||
} else {
|
||||
if (use_y4m) {
|
||||
if (frame_out == 1) {
|
||||
y4m_write_file_header(outfile,
|
||||
vpx_input_ctx.width, vpx_input_ctx.height,
|
||||
&vpx_input_ctx.framerate, img->fmt);
|
||||
}
|
||||
y4m_write_frame_header(outfile);
|
||||
}
|
||||
write_image_file(img, planes, outfile);
|
||||
}
|
||||
} else {
|
||||
|
25
y4menc.c
25
y4menc.c
@ -10,21 +10,18 @@
|
||||
|
||||
#include "./y4menc.h"
|
||||
|
||||
void y4m_write_file_header(FILE *file, int width, int height,
|
||||
const struct VpxRational *framerate,
|
||||
vpx_img_fmt_t fmt) {
|
||||
const char *color = fmt == VPX_IMG_FMT_444A ? "C444alpha\n" :
|
||||
fmt == VPX_IMG_FMT_I444 ? "C444\n" :
|
||||
fmt == VPX_IMG_FMT_I422 ? "C422\n" :
|
||||
"C420jpeg\n";
|
||||
int y4m_write_file_header(char *buf, size_t len, int width, int height,
|
||||
const struct VpxRational *framerate,
|
||||
vpx_img_fmt_t fmt) {
|
||||
const char *const color = fmt == VPX_IMG_FMT_444A ? "C444alpha\n" :
|
||||
fmt == VPX_IMG_FMT_I444 ? "C444\n" :
|
||||
fmt == VPX_IMG_FMT_I422 ? "C422\n" :
|
||||
"C420jpeg\n";
|
||||
|
||||
// Note: We can't output an aspect ratio here because IVF doesn't
|
||||
// store one, and neither does VP8.
|
||||
// That will have to wait until these tools support WebM natively.*/
|
||||
fprintf(file, "YUV4MPEG2 W%u H%u F%u:%u I%c %s", width, height,
|
||||
framerate->numerator, framerate->denominator, 'p', color);
|
||||
return snprintf(buf, len, "YUV4MPEG2 W%u H%u F%u:%u I%c %s", width, height,
|
||||
framerate->numerator, framerate->denominator, 'p', color);
|
||||
}
|
||||
|
||||
void y4m_write_frame_header(FILE *file) {
|
||||
fprintf(file, "FRAME\n");
|
||||
int y4m_write_frame_header(char *buf, size_t len) {
|
||||
return snprintf(buf, len, "FRAME\n");
|
||||
}
|
||||
|
12
y4menc.h
12
y4menc.h
@ -11,8 +11,6 @@
|
||||
#ifndef Y4MENC_H_
|
||||
#define Y4MENC_H_
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include "./tools_common.h"
|
||||
|
||||
#include "vpx/vpx_decoder.h"
|
||||
@ -21,12 +19,12 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void y4m_write_file_header(FILE *file, int width, int height,
|
||||
const struct VpxRational *framerate,
|
||||
vpx_img_fmt_t fmt);
|
||||
|
||||
void y4m_write_frame_header(FILE *file);
|
||||
#define Y4M_BUFFER_SIZE 128
|
||||
|
||||
int y4m_write_file_header(char *buf, size_t len, int width, int height,
|
||||
const struct VpxRational *framerate,
|
||||
vpx_img_fmt_t fmt);
|
||||
int y4m_write_frame_header(char *buf, size_t len);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
|
Loading…
x
Reference in New Issue
Block a user