Вход Регистрация
Файл: vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Filters/AdvancedMedia/TestSrcFilter.php
Строк: 211
<?php

namespace FFMpegFiltersAdvancedMedia;

use 
FFMpegMediaAdvancedMedia;

/**
 * This filter builds various types of computed inputs.
 *
 * @see https://ffmpeg.org/ffmpeg-filters.html#allrgb_002c-allyuv_002c-color_002c-haldclutsrc_002c-nullsrc_002c-pal75bars_002c-pal100bars_002c-rgbtestsrc_002c-smptebars_002c-smptehdbars_002c-testsrc_002c-testsrc2_002c-yuvtestsrc
 */
class TestSrcFilter extends AbstractComplexFilter
{
    
/**
     * Source returns frames of size 4096x4096 of all rgb colors.
     */
    
public const ALLRGB 'allrgb';

    
/**
     * Source returns frames of size 4096x4096 of all yuv colors.
     */
    
public const ALLYUV 'allyuv';

    
/**
     * Source provides an uniformly colored input.
     */
    
public const COLOR 'color';

    
/**
     * Source provides an identity Hald CLUT.
     */
    
public const HALDCLUTSRC 'haldclutsrc';

    
/**
     * Source returns unprocessed video frames.
     * It is mainly useful to be employed in analysis / debugging tools,
     * or as the source for filters which ignore the input data.
     */
    
public const NULLSRC 'nullsrc';

    
/**
     * Source generates a color bars pattern, based on EBU PAL recommendations with 75% color levels.
     */
    
public const PAL75BARS 'pal75bars';

    
/**
     * Source generates a color bars pattern, based on EBU PAL recommendations with 100% color levels.
     */
    
public const PAL100BARS 'pal100bars';

    
/**
     * Source generates an RGB test pattern useful for detecting RGB vs BGR issues.
     * You should see a red, green and blue stripe from top to bottom.
     */
    
public const RGBTESTSRC 'rgbtestsrc';

    
/**
     * Source generates a color bars pattern, based on the SMPTE Engineering Guideline EG 1-1990.
     */
    
public const SMPTEBARS 'smptebars';

    
/**
     * Source generates a color bars pattern, based on the SMPTE RP 219-2002.
     */
    
public const SMPTEHDBARS 'smptehdbars';

    
/**
     * Source generates a test video pattern, showing a color pattern, a scrolling gradient and a timestamp.
     * This is mainly intended for testing purposes.
     */
    
public const TESTSRC 'testsrc';

    
/**
     * Source is similar to testsrc, but supports more pixel formats instead of just rgb24.
     * This allows using it as an input for other tests without requiring a format conversion.
     */
    
public const TESTSRC2 'testsrc2';

    
/**
     * Source generates an YUV test pattern. You should see a y, cb and cr stripe from top to bottom.
     */
    
public const YUVTESTSRC 'yuvtestsrc';

    
/**
     * @var string|null
     */
    
private $type;

    
/**
     * Specify the level of the Hald CLUT, only available in the haldclutsrc source.
     * A level of N generates a picture of N*N*N by N*N*N pixels to be used as identity matrix for 3D lookup tables.
     * Each component is coded on a 1/(N*N) scale.
     *
     * @var string|null
     */
    
private $level;

    
/**
     * Specify the color of the source, only available in the color source.
     *
     * @var string|null
     */
    
private $color;

    
/**
     * Specify the size of the sourced video.
     * This option is not available with the allrgb, allyuv, and haldclutsrc filters.
     *
     * @var string|null
     */
    
private $size;

    
/**
     * Specify the frame rate of the sourced video, as the number of frames generated per second.
     * It has to be a string in the format frame_rate_num/frame_rate_den, an integer number,
     * a floating point number or a valid video frame rate abbreviation. The default value is "25".
     *
     * @var string|null
     */
    
private $rate;

    
/**
     * Set the duration of the sourced video.
     * If not specified, or the expressed duration is negative, the video is supposed to be generated forever.
     *
     * @var string|null
     */
    
private $duration;

    
/**
     * Set the sample aspect ratio of the sourced video.
     *
     * @var string|null
     */
    
private $sar;

    
/**
     * Specify the alpha (opacity) of the background, only available in the testsrc2 source.
     * The value must be between 0 (fully transparent) and 255 (fully opaque, the default).
     *
     * @var int|null
     */
    
private $alpha;

    
/**
     * Set the number of decimals to show in the timestamp, only available in the testsrc source.
     * The displayed timestamp value will correspond to the original timestamp value multiplied
     * by the power of 10 of the specified value. Default value is 0.
     *
     * @var float|null
     */
    
private $decimals;

    
/**
     * TestSrcComplexFilter constructor.
     *
     * @param string|null $type
     * @param string|null $size
     * @param string|null $duration
     * @param string|null $sar
     * @param string|null $rate
     * @param string|null $level
     * @param string|null $color
     * @param int|null    $alpha
     * @param float|null  $decimals
     * @param int|null    $priority
     */
    
public function __construct(
        
$type self::TESTSRC,
        
$size '320x240',
        
$duration null,
        
$sar null,
        
$rate null,
        
$level null,
        
$color null,
        
$alpha null,
        
$decimals null,
        
$priority 0
    
) {
        
parent::__construct($priority);
        
$this->type $type;
        
$this->level $level;
        
$this->color $color;
        
$this->size $size;
        
$this->rate $rate;
        
$this->duration $duration;
        
$this->sar $sar;
        
$this->alpha $alpha;
        
$this->decimals $decimals;
    }

    
/**
     * Get name of the filter.
     *
     * @return string
     */
    
public function getName()
    {
        return 
$this->type;
    }

    
/**
     * Get minimal version of ffmpeg starting with which this filter is supported.
     *
     * @return string
     */
    
public function getMinimalFFMpegVersion()
    {
        switch (
$this->type) {
            case 
self::PAL75BARS:
            case 
self::PAL100BARS:
                return 
'4.1';
            case 
self::YUVTESTSRC:
                return 
'3.2';
            case 
self::ALLRGB:
            case 
self::ALLYUV:
                return 
'2.8';
            case 
self::SMPTEHDBARS:
                return 
'2.0';
            case 
self::SMPTEBARS:
                return 
'1.0';
            default:
                return 
'0.3';
        }
    }

    
/**
     * {@inheritdoc}
     */
    
public function applyComplex(AdvancedMedia $media)
    {
        return [
            
'-filter_complex',
            
$this->type.$this->buildFilterOptions([
                
'level' => $this->level,
                
'color' => $this->color,
                
'size' => $this->size,
                
'rate' => $this->rate,
                
'duration' => $this->duration,
                
'sar' => $this->sar,
                
'alpha' => $this->alpha,
                
'decimals' => $this->decimals,
            ]),
        ];
    }
}
Онлайн: 0
Реклама