LUMIERA.clone/tests/basics/teststreamtypes.hpp
Ichthyostega 7c9ab5fba2 reorganise test suite compartments
this change is prerequisite to allow linking against different scopes (#938)
2014-10-17 20:02:25 +02:00

94 lines
2.9 KiB
C++

/*
TESTSTREAMTYPES.hpp - create test (stub) stream type information
Copyright (C) Lumiera.org
2008, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
This program 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef LUMIERA_TEST_TESTSTREAMTYPES_H
#define LUMIERA_TEST_TESTSTREAMTYPES_H
//#include "lib/util.hpp"
#include "proc/streamtype.hpp"
#include "proc/control/stypemanager.hpp"
extern "C" {
#include <gavl/gavl.h>
}
namespace proc {
namespace test_format {
namespace { // constants used to parametrise tests
const int TEST_IMG_WIDTH = 40;
const int TEST_IMG_HEIGHT = 30;
const int TEST_FRAME_DUR = GAVL_TIME_SCALE / 25;
}
Symbol GAVL = "GAVL";
/** Helper: create an raw GAVL type descriptor
* usable for generating a Lumiera StreamType
*/
inline gavl_video_format_t
test_createRawType ()
{
gavl_video_format_t type;
type.pixelformat = GAVL_RGB_24;
type.interlace_mode = GAVL_INTERLACE_NONE;
type.framerate_mode = GAVL_FRAMERATE_CONSTANT;
type.chroma_placement = GAVL_CHROMA_PLACEMENT_DEFAULT;
type.image_width = TEST_IMG_WIDTH; // Width of the image in pixels
type.image_height = TEST_IMG_WIDTH; // Height of the image in pixels
type.frame_width = TEST_IMG_WIDTH; // Width of the frame buffer in pixels, might be larger than image_width
type.frame_height = TEST_IMG_WIDTH; // Height of the frame buffer in pixels, might be larger than image_height
type.pixel_width = 1; // Relative width of a pixel (pixel aspect ratio is pixel_width/pixel_height)
type.pixel_height = 1; // Relative height of a pixel (pixel aspect ratio is pixel_width/pixel_height)
type.frame_duration = TEST_FRAME_DUR; // Duration of a frame in timescale tics.
type.timescale = GAVL_TIME_SCALE; // Timescale in tics per second (is defined to be 1000000 as of 9/2008)
return type;
}
/** Helper: create an implementation frame
* and build the corresponding streamtype
*/
inline StreamType::ImplFacade const&
test_createImplType ()
{
gavl_video_format_t rawType = test_createRawType();
return control::STypeManager::instance().getImpl (GAVL, rawType);
}
}} // namespace proc::test_format
#endif