Add webm_info.
Migrated from the webm-tools repository with minor tweaks to fix its build in the new location. Last location/revision: https://chromium.googlesource.com/webm/webm-tools a7e97e8f0a913ddd97444392bb8816f44a4821a1 Change-Id: Icfad43d9fdd37fc413a6a28b57b370c97c7c28df
This commit is contained in:
parent
ccf75f67a0
commit
596f5e0544
1
.gitignore
vendored
1
.gitignore
vendored
@ -23,6 +23,7 @@ sample_muxer
|
|||||||
vttdemux
|
vttdemux
|
||||||
muxer_tests
|
muxer_tests
|
||||||
parser_tests
|
parser_tests
|
||||||
|
webm_info
|
||||||
webm2pes
|
webm2pes
|
||||||
webm2pes_tests
|
webm2pes_tests
|
||||||
webm2ts
|
webm2ts
|
||||||
|
@ -40,6 +40,7 @@ else ()
|
|||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
set(CMAKE_CXX_FLAGS "-D__STDC_CONSTANT_MACROS ${CMAKE_CXX_FLAGS}")
|
set(CMAKE_CXX_FLAGS "-D__STDC_CONSTANT_MACROS ${CMAKE_CXX_FLAGS}")
|
||||||
|
set(CMAKE_CXX_FLAGS "-D__STDC_FORMAT_MACROS ${CMAKE_CXX_FLAGS}")
|
||||||
set(CMAKE_CXX_FLAGS "-D__STDC_LIMIT_MACROS ${CMAKE_CXX_FLAGS}")
|
set(CMAKE_CXX_FLAGS "-D__STDC_LIMIT_MACROS ${CMAKE_CXX_FLAGS}")
|
||||||
|
|
||||||
# mkvmuxer section.
|
# mkvmuxer section.
|
||||||
@ -113,6 +114,16 @@ add_executable(vttdemux
|
|||||||
"${LIBWEBM_SRC_DIR}/webvtt/webvttparser.h")
|
"${LIBWEBM_SRC_DIR}/webvtt/webvttparser.h")
|
||||||
target_link_libraries(vttdemux LINK_PUBLIC webm)
|
target_link_libraries(vttdemux LINK_PUBLIC webm)
|
||||||
|
|
||||||
|
# Webm_info section.
|
||||||
|
add_executable(webm_info
|
||||||
|
"${LIBWEBM_SRC_DIR}/common/indent.cc"
|
||||||
|
"${LIBWEBM_SRC_DIR}/common/indent.h"
|
||||||
|
"${LIBWEBM_SRC_DIR}/common/webm_constants.h"
|
||||||
|
"${LIBWEBM_SRC_DIR}/common/webm_endian.cc"
|
||||||
|
"${LIBWEBM_SRC_DIR}/common/webm_endian.h"
|
||||||
|
"${LIBWEBM_SRC_DIR}/webm_info.cc")
|
||||||
|
target_link_libraries(webm_info LINK_PUBLIC webm)
|
||||||
|
|
||||||
if (ENABLE_WEBMTS)
|
if (ENABLE_WEBMTS)
|
||||||
# webmts (PES/TS support) library section.
|
# webmts (PES/TS support) library section.
|
||||||
add_library(webmts
|
add_library(webmts
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
CXX := g++
|
CXX := g++
|
||||||
DEFINES := -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS
|
DEFINES := -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS
|
||||||
|
DEFINES += -D__STDC_LIMIT_MACROS
|
||||||
INCLUDES := -I.
|
INCLUDES := -I.
|
||||||
CXXFLAGS := -W -Wall -g
|
CXXFLAGS := -W -Wall -g
|
||||||
ALL_CXXFLAGS := -MMD -MP $(DEFINES) $(INCLUDES) $(CXXFLAGS)
|
ALL_CXXFLAGS := -MMD -MP $(DEFINES) $(INCLUDES) $(CXXFLAGS)
|
||||||
@ -11,13 +12,14 @@ WEBMOBJS += common/file_util.o common/hdr_util.o
|
|||||||
OBJSA := $(WEBMOBJS:.o=_a.o)
|
OBJSA := $(WEBMOBJS:.o=_a.o)
|
||||||
OBJSSO := $(WEBMOBJS:.o=_so.o)
|
OBJSSO := $(WEBMOBJS:.o=_so.o)
|
||||||
VTTOBJS := webvtt/vttreader.o webvtt/webvttparser.o sample_muxer_metadata.o
|
VTTOBJS := webvtt/vttreader.o webvtt/webvttparser.o sample_muxer_metadata.o
|
||||||
EXEOBJS := sample.o sample_muxer.o dumpvtt.o vttdemux.o
|
EXEOBJS := sample.o sample_muxer.o dumpvtt.o vttdemux.o webm_info.o
|
||||||
|
INFOOBJS := common/indent.o common/webm_endian.o
|
||||||
DEPS := $(WEBMOBJS:.o=.d) $(OBJECTS1:.o=.d) $(OBJECTS2:.o=.d)
|
DEPS := $(WEBMOBJS:.o=.d) $(OBJECTS1:.o=.d) $(OBJECTS2:.o=.d)
|
||||||
DEPS += $(OBJECTS3:.o=.d) $(OBJECTS4:.o=.d) $(OBJSA:.o=.d) $(OBJSSO:.o=.d)
|
DEPS += $(OBJECTS3:.o=.d) $(OBJECTS4:.o=.d) $(OBJSA:.o=.d) $(OBJSSO:.o=.d)
|
||||||
DEPS += $(VTTOBJS:.o=.d) $(EXEOBJS:.o=.d)
|
DEPS += $(VTTOBJS:.o=.d) $(EXEOBJS:.o=.d) $(INFOOBJS:.o=.d)
|
||||||
EXES := sample_muxer sample dumpvtt vttdemux
|
EXES := sample_muxer sample dumpvtt vttdemux webm_info
|
||||||
CLEAN := $(EXEOBJS) $(VTTOBJS) $(WEBMOBJS) $(OBJSA) $(OBJSSO) $(LIBWEBMA)
|
CLEAN := $(EXEOBJS) $(VTTOBJS) $(WEBMOBJS) $(OBJSA) $(OBJSSO) $(LIBWEBMA)
|
||||||
CLEAN += $(LIBWEBMSO) $(EXES) $(DEPS)
|
CLEAN += $(LIBWEBMSO) $(EXES) $(DEPS) $(INFOOBJS)
|
||||||
|
|
||||||
all: $(EXES)
|
all: $(EXES)
|
||||||
|
|
||||||
@ -33,6 +35,9 @@ dumpvtt: dumpvtt.o $(VTTOBJS) $(WEBMOBJS)
|
|||||||
vttdemux: vttdemux.o $(VTTOBJS) $(LIBWEBMA)
|
vttdemux: vttdemux.o $(VTTOBJS) $(LIBWEBMA)
|
||||||
$(CXX) $^ -o $@
|
$(CXX) $^ -o $@
|
||||||
|
|
||||||
|
webm_info: webm_info.o $(INFOOBJS) $(LIBWEBMA)
|
||||||
|
$(CXX) $^ -o $@
|
||||||
|
|
||||||
shared: $(LIBWEBMSO)
|
shared: $(LIBWEBMSO)
|
||||||
|
|
||||||
libwebm.a: $(OBJSA)
|
libwebm.a: $(OBJSA)
|
||||||
|
29
common/indent.cc
Normal file
29
common/indent.cc
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2012 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 "common/indent.h"
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
namespace libwebm {
|
||||||
|
|
||||||
|
Indent::Indent(int indent) : indent_(indent), indent_str_() { Update(); }
|
||||||
|
|
||||||
|
void Indent::Adjust(int indent) {
|
||||||
|
indent_ += indent;
|
||||||
|
if (indent_ < 0)
|
||||||
|
indent_ = 0;
|
||||||
|
|
||||||
|
Update();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Indent::Update() { indent_str_ = std::string(indent_, ' '); }
|
||||||
|
|
||||||
|
} // namespace libwebm
|
48
common/indent.h
Normal file
48
common/indent.h
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2012 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 LIBWEBM_COMMON_INDENT_H_
|
||||||
|
#define LIBWEBM_COMMON_INDENT_H_
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "mkvmuxer/mkvmuxertypes.h"
|
||||||
|
|
||||||
|
namespace libwebm {
|
||||||
|
|
||||||
|
const int kIncreaseIndent = 2;
|
||||||
|
const int kDecreaseIndent = -2;
|
||||||
|
|
||||||
|
// Used for formatting output so objects only have to keep track of spacing
|
||||||
|
// within their scope.
|
||||||
|
class Indent {
|
||||||
|
public:
|
||||||
|
explicit Indent(int indent);
|
||||||
|
|
||||||
|
// Changes the number of spaces output. The value adjusted is relative to
|
||||||
|
// |indent_|.
|
||||||
|
void Adjust(int indent);
|
||||||
|
|
||||||
|
std::string indent_str() const { return indent_str_; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
// Called after |indent_| is changed. This will set |indent_str_| to the
|
||||||
|
// proper number of spaces.
|
||||||
|
void Update();
|
||||||
|
|
||||||
|
int indent_;
|
||||||
|
std::string indent_str_;
|
||||||
|
|
||||||
|
LIBWEBM_DISALLOW_COPY_AND_ASSIGN(Indent);
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace libwebm
|
||||||
|
|
||||||
|
#endif // LIBWEBM_COMMON_INDENT_H_
|
20
common/webm_constants.h
Normal file
20
common/webm_constants.h
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
// Copyright (c) 2012 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 LIBWEBM_COMMON_WEBM_CONSTANTS_H_
|
||||||
|
#define LIBWEBM_COMMON_WEBM_CONSTANTS_H_
|
||||||
|
|
||||||
|
namespace libwebm {
|
||||||
|
|
||||||
|
const double kNanosecondsPerSecond = 1000000000.0;
|
||||||
|
const int kNanosecondsPerSecondi = 1000000000;
|
||||||
|
const int kNanosecondsPerMillisecond = 1000000;
|
||||||
|
|
||||||
|
} // namespace libwebm
|
||||||
|
|
||||||
|
#endif // LIBWEBM_COMMON_WEBM_CONSTANTS_H_
|
54
common/webm_endian.cc
Normal file
54
common/webm_endian.cc
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
// Copyright (c) 2012 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 "common/webm_endian.h"
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
// Swaps unsigned 64 bit values to big endian if needed. Returns |value|
|
||||||
|
// unmodified if architecture is big endian. Returns swapped bytes of |value|
|
||||||
|
// if architecture is little endian. Returns 0 otherwise.
|
||||||
|
uint64_t swap64_check_little_endian(uint64_t value) {
|
||||||
|
// Check endianness.
|
||||||
|
union {
|
||||||
|
uint64_t val64;
|
||||||
|
uint8_t c[8];
|
||||||
|
} check;
|
||||||
|
check.val64 = 0x0123456789ABCDEFULL;
|
||||||
|
|
||||||
|
// Check for big endian.
|
||||||
|
if (check.c[7] == 0xEF)
|
||||||
|
return value;
|
||||||
|
|
||||||
|
// Check for not little endian.
|
||||||
|
if (check.c[0] != 0xEF)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return value << 56 | ((value << 40) & 0x00FF000000000000ULL) |
|
||||||
|
((value << 24) & 0x0000FF0000000000ULL) |
|
||||||
|
((value << 8) & 0x000000FF00000000ULL) |
|
||||||
|
((value >> 8) & 0x00000000FF000000ULL) |
|
||||||
|
((value >> 24) & 0x0000000000FF0000ULL) |
|
||||||
|
((value >> 40) & 0x000000000000FF00ULL) | value >> 56;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
namespace libwebm {
|
||||||
|
|
||||||
|
uint64_t host_to_bigendian(uint64_t value) {
|
||||||
|
return swap64_check_little_endian(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint64_t bigendian_to_host(uint64_t value) {
|
||||||
|
return swap64_check_little_endian(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace libwebm
|
28
common/webm_endian.h
Normal file
28
common/webm_endian.h
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
// Copyright (c) 2012 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 LIBWEBM_COMMON_WEBM_ENDIAN_H_
|
||||||
|
#define LIBWEBM_COMMON_WEBM_ENDIAN_H_
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
namespace libwebm {
|
||||||
|
|
||||||
|
// Swaps unsigned 64 bit values to big endian if needed. Returns |value| if
|
||||||
|
// architecture is big endian. Returns little endian value if architecture is
|
||||||
|
// little endian. Returns 0 otherwise.
|
||||||
|
uint64_t host_to_bigendian(uint64_t value);
|
||||||
|
|
||||||
|
// Swaps unsigned 64 bit values to little endian if needed. Returns |value| if
|
||||||
|
// architecture is big endian. Returns little endian value if architecture is
|
||||||
|
// little endian. Returns 0 otherwise.
|
||||||
|
uint64_t bigendian_to_host(uint64_t value);
|
||||||
|
|
||||||
|
} // namespace libwebm
|
||||||
|
|
||||||
|
#endif // LIBWEBM_COMMON_WEBM_ENDIAN_H_
|
1074
webm_info.cc
Normal file
1074
webm_info.cc
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user