Package com.xuggle.mediatool

Source Code of com.xuggle.mediatool.MediaToolTest

/*******************************************************************************
* Copyright (c) 2008, 2010 Xuggle Inc.  All rights reserved.
* This file is part of Xuggle-Xuggler-Main.
*
* Xuggle-Xuggler-Main is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Xuggle-Xuggler-Main is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Xuggle-Xuggler-Main.  If not, see <http://www.gnu.org/licenses/>.
*******************************************************************************/

package com.xuggle.mediatool;

import org.junit.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.File;

import com.xuggle.mediatool.MediaDebugListener;
import com.xuggle.mediatool.MediaReader;
import com.xuggle.mediatool.MediaViewer;
import com.xuggle.mediatool.MediaWriter;
import com.xuggle.xuggler.IError;

import static com.xuggle.mediatool.IMediaDebugListener.Event.*;
import static com.xuggle.mediatool.IMediaDebugListener.Mode.*;
import static com.xuggle.mediatool.IMediaViewer.Mode.*;

import static junit.framework.Assert.*;

public class MediaToolTest
{
  // the log

  private final Logger log = LoggerFactory.getLogger(this.getClass());
  { log.trace("<init>"); }

  // show the videos during transcoding?
 
  final MediaViewer.Mode mViewerMode = IMediaViewer.Mode.valueOf(
    System.getProperty(this.getClass().getName() + ".ViewerMode",
      DISABLED.name()));

  // standard test name prefix

  final String PREFIX = this.getClass().getName() + "-";

  // location of test files

  public static final String TEST_FILE_DIR = "fixtures";

  // one of the stock test files
 
  public static final String INPUT_FILENAME  = TEST_FILE_DIR +
    "/testfile_videoonly_20sec.flv";

  public static final int    READER_VIDEO_FRAME_COUNT  = 300;
  public static final int    READER_AUDIO_FRAME_COUNT  = 762;
  public static final int    READER_PACKET_READ_COUNT  =
    READER_VIDEO_FRAME_COUNT + READER_AUDIO_FRAME_COUNT;
  public static final int    READER_PACKET_WRITE_COUNT = 0;

  public static final int    WRITER_VIDEO_FRAME_COUNT  = 300;
  public static final int    WRITER_AUDIO_FRAME_COUNT  = 762;
  public static final int    WRITER_PACKET_READ_COUNT  = 0;
  public static final int    WRITER_PACKET_WRITE_COUNT = 
    WRITER_VIDEO_FRAME_COUNT + WRITER_AUDIO_FRAME_COUNT + 3;

  public static final int    OUTPUT_FILE_SIZE          = 3826466;

//  public static final String INPUT_FILENAME  =
//    "fixtures/ucl_h264_aac.mp4";
//
//   public static final int    READER_VIDEO_FRAME_COUNT  = 477;
//   public static final int    READER_AUDIO_FRAME_COUNT  = 684;
//   public static final int    READER_PACKET_READ_COUNT  =
//     READER_VIDEO_FRAME_COUNT + READER_AUDIO_FRAME_COUNT;
//   public static final int    READER_PACKET_WRITE_COUNT = 0;

//   public static final int    WRITER_VIDEO_FRAME_COUNT  = 447;
//   public static final int    WRITER_AUDIO_FRAME_COUNT  = 684;
//   public static final int    WRITER_PACKET_READ_COUNT  = 0;
//   public static final int    WRITER_PACKET_WRITE_COUNT = 
//     WRITER_VIDEO_FRAME_COUNT + WRITER_AUDIO_FRAME_COUNT + 3;
//
//  public static final int    OUTPUT_FILE_SIZE          = ?;

  public final String OUTPUT_FILENAME = PREFIX + "output.flv";

  public MediaToolTest() {
    log.trace("<init>");
  }
  // test thet the proper number of events are signaled during reading
  // and writng of a media file

  @Test()
    public void testEventCounts()
  {
    File inputFile = new File(INPUT_FILENAME);
    File outputFile = new File(OUTPUT_FILENAME);
    assert(inputFile.exists());
    outputFile.delete();
    assert(!outputFile.exists());

    MediaReader reader = new MediaReader(INPUT_FILENAME);
    MediaWriter writer = new MediaWriter(OUTPUT_FILENAME, reader);
    reader.addListener(writer);

    writer.addListener(new MediaViewer(mViewerMode, true, 0));

    MediaDebugListener readerCounter = new MediaDebugListener(URL, META_DATA);
    MediaDebugListener writerCounter = new MediaDebugListener(EVENT, META_DATA);

    reader.addListener(readerCounter);
    writer.addListener(writerCounter);

   
    IError rv;
    while ((rv = reader.readPacket()) == null)
      ;

    assertEquals(IError.Type.ERROR_EOF    , rv.getType());

    assertEquals(READER_VIDEO_FRAME_COUNT , readerCounter.getCount(VIDEO));
    assertEquals(READER_AUDIO_FRAME_COUNT , readerCounter.getCount(AUDIO));
    assertEquals(1                        , readerCounter.getCount(OPEN));
    assertEquals(1                        , readerCounter.getCount(CLOSE));
    assertEquals(2                        , readerCounter.getCount(ADD_STREAM));
    assertEquals(2                        , readerCounter.getCount(OPEN_STREAM));
    assertEquals(2                        , readerCounter.getCount(CLOSE_STREAM));
    assertEquals(READER_PACKET_READ_COUNT , readerCounter.getCount(READ_PACKET));
    assertEquals(READER_PACKET_WRITE_COUNT, readerCounter.getCount(WRITE_PACKET));
    assertEquals(0                        , readerCounter.getCount(HEADER));
    assertEquals(0                        , readerCounter.getCount(FLUSH));
    assertEquals(0                        , readerCounter.getCount(TRAILER));

    assertEquals(WRITER_VIDEO_FRAME_COUNT , writerCounter.getCount(VIDEO));
    assertEquals(WRITER_AUDIO_FRAME_COUNT , writerCounter.getCount(AUDIO));
    assertEquals(1                        , writerCounter.getCount(OPEN));
    assertEquals(1                        , writerCounter.getCount(CLOSE));
    assertEquals(2                        , writerCounter.getCount(ADD_STREAM));
    assertEquals(2                        , writerCounter.getCount(OPEN_STREAM));
    assertEquals(2                        , writerCounter.getCount(CLOSE_STREAM));
    assertEquals(WRITER_PACKET_READ_COUNT , writerCounter.getCount(READ_PACKET));
    assertEquals(WRITER_PACKET_WRITE_COUNT, writerCounter.getCount(WRITE_PACKET));
    assertEquals(1                        , writerCounter.getCount(HEADER));
    assertEquals(1                        , writerCounter.getCount(FLUSH));
    assertEquals(1                        , writerCounter.getCount(TRAILER));

    assert(outputFile.exists());
    assertEquals(OUTPUT_FILE_SIZE, outputFile.length(), 200);

    log.debug("reader " + readerCounter);
    log.debug("writer " + writerCounter);
  }
}
TOP

Related Classes of com.xuggle.mediatool.MediaToolTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.