| Index: webrtc/tools/converter/converter.cc
|
| diff --git a/webrtc/tools/converter/converter.cc b/webrtc/tools/converter/converter.cc
|
| deleted file mode 100644
|
| index a9b453d5091f5680d59af6ff5b9d58e596922994..0000000000000000000000000000000000000000
|
| --- a/webrtc/tools/converter/converter.cc
|
| +++ /dev/null
|
| @@ -1,176 +0,0 @@
|
| -/*
|
| - * Copyright (c) 2012 The WebRTC 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 <stdlib.h>
|
| -#include <sys/stat.h>
|
| -
|
| -#include <iomanip>
|
| -#include <sstream>
|
| -
|
| -#include "webrtc/tools/converter/converter.h"
|
| -
|
| -#ifdef WIN32
|
| -#define SEPARATOR '\\'
|
| -#define STAT _stat
|
| -#else
|
| -#define SEPARATOR '/'
|
| -#define STAT stat
|
| -#endif
|
| -
|
| -namespace webrtc {
|
| -namespace test {
|
| -
|
| -Converter::Converter(int width, int height)
|
| - : width_(width),
|
| - height_(height) {
|
| -}
|
| -
|
| -bool Converter::ConvertRGBAToI420Video(std::string frames_dir,
|
| - std::string output_file_name,
|
| - bool delete_frames) {
|
| - FILE* output_file = fopen(output_file_name.c_str(), "wb");
|
| -
|
| - // Open output file in append mode.
|
| - if (output_file == NULL) {
|
| - fprintf(stderr, "Couldn't open input file for reading: %s\n",
|
| - output_file_name.c_str());
|
| - return false;
|
| - }
|
| -
|
| - int input_frame_size = InputFrameSize();
|
| - uint8_t* rgba_buffer = new uint8_t[input_frame_size];
|
| - int y_plane_size = YPlaneSize();
|
| - uint8_t* dst_y = new uint8_t[y_plane_size];
|
| - int u_plane_size = UPlaneSize();
|
| - uint8_t* dst_u = new uint8_t[u_plane_size];
|
| - int v_plane_size = VPlaneSize();
|
| - uint8_t* dst_v = new uint8_t[v_plane_size];
|
| -
|
| - int counter = 0; // Counter to form frame names.
|
| - bool success = false; // Is conversion successful.
|
| -
|
| - while (true) {
|
| - std::string file_name = FormFrameName(4, counter);
|
| - // Get full path file name.
|
| - std::string input_file_name = FindFullFileName(frames_dir, file_name);
|
| -
|
| - if (FileExists(input_file_name)) {
|
| - ++counter; // Update counter for the next round.
|
| - } else {
|
| - fprintf(stdout, "Reached end of frames list\n");
|
| - break;
|
| - }
|
| -
|
| - // Read the RGBA frame into rgba_buffer.
|
| - ReadRGBAFrame(input_file_name.c_str(), input_frame_size, rgba_buffer);
|
| -
|
| - // Delete the input frame.
|
| - if (delete_frames) {
|
| - if (remove(input_file_name.c_str()) != 0) {
|
| - fprintf(stderr, "Cannot delete file %s\n", input_file_name.c_str());
|
| - }
|
| - }
|
| -
|
| - // Convert to I420 frame.
|
| - libyuv::ABGRToI420(rgba_buffer, SrcStrideFrame(),
|
| - dst_y, DstStrideY(),
|
| - dst_u, DstStrideU(),
|
| - dst_v, DstStrideV(),
|
| - width_, height_);
|
| -
|
| - // Add the I420 frame to the YUV video file.
|
| - success = AddYUVToFile(dst_y, y_plane_size, dst_u, u_plane_size,
|
| - dst_v, v_plane_size, output_file);
|
| -
|
| -
|
| - if (!success) {
|
| - fprintf(stderr, "LibYUV error during RGBA to I420 frame conversion\n");
|
| - break;
|
| - }
|
| - }
|
| -
|
| - delete[] rgba_buffer;
|
| - delete[] dst_y;
|
| - delete[] dst_u;
|
| - delete[] dst_v;
|
| -
|
| - fclose(output_file);
|
| -
|
| - return success;
|
| -}
|
| -
|
| -bool Converter::AddYUVToFile(uint8_t* y_plane,
|
| - int y_plane_size,
|
| - uint8_t* u_plane,
|
| - int u_plane_size,
|
| - uint8_t* v_plane,
|
| - int v_plane_size,
|
| - FILE* output_file) {
|
| - bool success = AddYUVPlaneToFile(y_plane, y_plane_size, output_file) &&
|
| - AddYUVPlaneToFile(u_plane, u_plane_size, output_file) &&
|
| - AddYUVPlaneToFile(v_plane, v_plane_size, output_file);
|
| - return success;
|
| -}
|
| -
|
| -bool Converter::AddYUVPlaneToFile(uint8_t* yuv_plane,
|
| - int yuv_plane_size,
|
| - FILE* file) {
|
| - size_t bytes_written = fwrite(yuv_plane, 1, yuv_plane_size, file);
|
| -
|
| - if (bytes_written != static_cast<size_t>(yuv_plane_size)) {
|
| - fprintf(stderr, "Number of bytes written (%d) doesn't match size of y plane"
|
| - " (%d)\n", static_cast<int>(bytes_written), yuv_plane_size);
|
| - return false;
|
| - }
|
| - return true;
|
| -}
|
| -
|
| -bool Converter::ReadRGBAFrame(const char* input_file_name, int input_frame_size,
|
| - unsigned char* buffer) {
|
| - FILE* input_file = fopen(input_file_name, "rb");
|
| - if (input_file == NULL) {
|
| - fprintf(stderr, "Couldn't open input file for reading: %s\n",
|
| - input_file_name);
|
| - return false;
|
| - }
|
| -
|
| - size_t nbr_read = fread(buffer, 1, input_frame_size, input_file);
|
| - fclose(input_file);
|
| -
|
| - if (nbr_read != static_cast<size_t>(input_frame_size)) {
|
| - fprintf(stderr, "Error reading from input file: %s\n", input_file_name);
|
| - return false;
|
| - }
|
| -
|
| - return true;
|
| -}
|
| -
|
| -std::string Converter::FindFullFileName(std::string dir_name,
|
| - std::string file_name) {
|
| - return dir_name + SEPARATOR + file_name;
|
| -}
|
| -
|
| -bool Converter:: FileExists(std::string file_name_to_check) {
|
| - struct STAT file_info;
|
| - int result = STAT(file_name_to_check.c_str(), &file_info);
|
| - return (result == 0);
|
| -}
|
| -
|
| -std::string Converter::FormFrameName(int width, int number) {
|
| - std::stringstream tmp;
|
| -
|
| - // Zero-pad number to a string.
|
| - tmp << std::setfill('0') << std::setw(width) << number;
|
| -
|
| - return "frame_" + tmp.str();
|
| -}
|
| -
|
| -} // namespace test
|
| -} // namespace webrtc
|
|
|