fix pipe support on windows
STDIO streams are opened in text mode by default on Windows. This patch changes the stdin/stdout streams to be in binary mode if they are being used for I/O from the vpxenc or vpxdec tools. Fixes issue #216. Thanks to mw AT hesotech.de for the fix. Change-Id: I34525b3ce2a4a031d5a48d36df4667589372225b
This commit is contained in:
parent
90c505f218
commit
c377bf0eec
@ -17,6 +17,7 @@ vpxdec.SRCS += md5_utils.c md5_utils.h
|
|||||||
vpxdec.SRCS += vpx_ports/vpx_timer.h
|
vpxdec.SRCS += vpx_ports/vpx_timer.h
|
||||||
vpxdec.SRCS += vpx/vpx_integer.h
|
vpxdec.SRCS += vpx/vpx_integer.h
|
||||||
vpxdec.SRCS += args.c args.h vpx_ports/config.h
|
vpxdec.SRCS += args.c args.h vpx_ports/config.h
|
||||||
|
vpxdec.SRCS += tools_common.c tools_common.h
|
||||||
vpxdec.SRCS += nestegg/halloc/halloc.h
|
vpxdec.SRCS += nestegg/halloc/halloc.h
|
||||||
vpxdec.SRCS += nestegg/halloc/src/align.h
|
vpxdec.SRCS += nestegg/halloc/src/align.h
|
||||||
vpxdec.SRCS += nestegg/halloc/src/halloc.c
|
vpxdec.SRCS += nestegg/halloc/src/halloc.c
|
||||||
@ -28,6 +29,7 @@ vpxdec.GUID = BA5FE66F-38DD-E034-F542-B1578C5FB950
|
|||||||
vpxdec.DESCRIPTION = Full featured decoder
|
vpxdec.DESCRIPTION = Full featured decoder
|
||||||
UTILS-$(CONFIG_ENCODERS) += vpxenc.c
|
UTILS-$(CONFIG_ENCODERS) += vpxenc.c
|
||||||
vpxenc.SRCS += args.c args.h y4minput.c y4minput.h
|
vpxenc.SRCS += args.c args.h y4minput.c y4minput.h
|
||||||
|
vpxenc.SRCS += tools_common.c tools_common.h
|
||||||
vpxenc.SRCS += vpx_ports/config.h vpx_ports/mem_ops.h
|
vpxenc.SRCS += vpx_ports/config.h vpx_ports/mem_ops.h
|
||||||
vpxenc.SRCS += vpx_ports/mem_ops_aligned.h
|
vpxenc.SRCS += vpx_ports/mem_ops_aligned.h
|
||||||
vpxenc.SRCS += libmkv/EbmlIDs.h
|
vpxenc.SRCS += libmkv/EbmlIDs.h
|
||||||
|
24
tools_common.c
Normal file
24
tools_common.c
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2010 The WebM project authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Use of this source code is governed by a BSD-style license
|
||||||
|
* that can be found in the LICENSE file in the root of the source
|
||||||
|
* tree. An additional intellectual property rights grant can be found
|
||||||
|
* in the file PATENTS. All contributing project authors may
|
||||||
|
* be found in the AUTHORS file in the root of the source tree.
|
||||||
|
*/
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "tools_common.h"
|
||||||
|
#ifdef _WIN32
|
||||||
|
#include <io.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
FILE* set_binary_mode(FILE *stream)
|
||||||
|
{
|
||||||
|
(void)stream;
|
||||||
|
#ifdef _WIN32
|
||||||
|
_setmode(_fileno(stream), _O_BINARY);
|
||||||
|
#endif
|
||||||
|
return stream;
|
||||||
|
}
|
16
tools_common.h
Normal file
16
tools_common.h
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2010 The WebM project authors. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Use of this source code is governed by a BSD-style license
|
||||||
|
* that can be found in the LICENSE file in the root of the source
|
||||||
|
* tree. An additional intellectual property rights grant can be found
|
||||||
|
* in the file PATENTS. All contributing project authors may
|
||||||
|
* be found in the AUTHORS file in the root of the source tree.
|
||||||
|
*/
|
||||||
|
#ifndef TOOLS_COMMON_H
|
||||||
|
#define TOOLS_COMMON_H
|
||||||
|
|
||||||
|
/* Sets a stdio stream into binary mode */
|
||||||
|
FILE* set_binary_mode(FILE *stream);
|
||||||
|
|
||||||
|
#endif
|
6
vpxdec.c
6
vpxdec.c
@ -35,6 +35,7 @@
|
|||||||
#if CONFIG_MD5
|
#if CONFIG_MD5
|
||||||
#include "md5_utils.h"
|
#include "md5_utils.h"
|
||||||
#endif
|
#endif
|
||||||
|
#include "tools_common.h"
|
||||||
#include "nestegg/include/nestegg/nestegg.h"
|
#include "nestegg/include/nestegg/nestegg.h"
|
||||||
|
|
||||||
#ifndef PATH_MAX
|
#ifndef PATH_MAX
|
||||||
@ -314,7 +315,8 @@ void *out_open(const char *out_fn, int do_md5)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
FILE *outfile = out = strcmp("-", out_fn) ? fopen(out_fn, "wb") : stdout;
|
FILE *outfile = out = strcmp("-", out_fn) ? fopen(out_fn, "wb")
|
||||||
|
: set_binary_mode(stdout);
|
||||||
|
|
||||||
if (!outfile)
|
if (!outfile)
|
||||||
{
|
{
|
||||||
@ -805,7 +807,7 @@ int main(int argc, const char **argv_)
|
|||||||
usage_exit();
|
usage_exit();
|
||||||
|
|
||||||
/* Open file */
|
/* Open file */
|
||||||
infile = strcmp(fn, "-") ? fopen(fn, "rb") : stdin;
|
infile = strcmp(fn, "-") ? fopen(fn, "rb") : set_binary_mode(stdin);
|
||||||
|
|
||||||
if (!infile)
|
if (!infile)
|
||||||
{
|
{
|
||||||
|
7
vpxenc.c
7
vpxenc.c
@ -35,6 +35,7 @@
|
|||||||
#include "vpx/vp8cx.h"
|
#include "vpx/vp8cx.h"
|
||||||
#include "vpx_ports/mem_ops.h"
|
#include "vpx_ports/mem_ops.h"
|
||||||
#include "vpx_ports/vpx_timer.h"
|
#include "vpx_ports/vpx_timer.h"
|
||||||
|
#include "tools_common.h"
|
||||||
#include "y4minput.h"
|
#include "y4minput.h"
|
||||||
#include "libmkv/EbmlWriter.h"
|
#include "libmkv/EbmlWriter.h"
|
||||||
#include "libmkv/EbmlIDs.h"
|
#include "libmkv/EbmlIDs.h"
|
||||||
@ -1334,7 +1335,8 @@ int main(int argc, const char **argv_)
|
|||||||
struct detect_buffer detect;
|
struct detect_buffer detect;
|
||||||
|
|
||||||
/* Parse certain options from the input file, if possible */
|
/* Parse certain options from the input file, if possible */
|
||||||
infile = strcmp(in_fn, "-") ? fopen(in_fn, "rb") : stdin;
|
infile = strcmp(in_fn, "-") ? fopen(in_fn, "rb")
|
||||||
|
: set_binary_mode(stdin);
|
||||||
|
|
||||||
if (!infile)
|
if (!infile)
|
||||||
{
|
{
|
||||||
@ -1449,7 +1451,8 @@ int main(int argc, const char **argv_)
|
|||||||
cfg.g_w, cfg.g_h, 1);
|
cfg.g_w, cfg.g_h, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
outfile = strcmp(out_fn, "-") ? fopen(out_fn, "wb") : stdout;
|
outfile = strcmp(out_fn, "-") ? fopen(out_fn, "wb")
|
||||||
|
: set_binary_mode(stdout);
|
||||||
|
|
||||||
if (!outfile)
|
if (!outfile)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user