aboutsummaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
authorHeshan <heshan@heidisoft.com>2011-03-07 14:40:10 +0530
committerHeshan <heshan@heidisoft.com>2011-03-07 14:40:10 +0530
commitf804c5913e46299bc52f97ce7905bc00c162db81 (patch)
tree9c887491b2e99ebd3ba013d2712fc2d927efc2bb /includes
parent7235ebc06e881ebefe1d2c45a3b0f5304e26b936 (diff)
downloadvideo-f804c5913e46299bc52f97ce7905bc00c162db81.tar.gz
video-f804c5913e46299bc52f97ce7905bc00c162db81.tar.bz2
Creating new module Video UI to manage Video module configurations ie. Preset management
Diffstat (limited to 'includes')
-rw-r--r--includes/preset.inc1
-rw-r--r--includes/video.features.inc50
-rw-r--r--includes/video.field.inc424
-rw-r--r--includes/video.preset.inc790
4 files changed, 1 insertions, 1264 deletions
diff --git a/includes/preset.inc b/includes/preset.inc
index 52d814b..f1c14b8 100644
--- a/includes/preset.inc
+++ b/includes/preset.inc
@@ -22,6 +22,7 @@ class video_preset {
*/
public function admin_settings() {
$form = array();
+ module_load_include('inc', 'video_ui', 'video.preset');
$presets = video_preset_get_presets();
if (count($presets) == 0) {
$form['video_preset'] = array(
diff --git a/includes/video.features.inc b/includes/video.features.inc
deleted file mode 100644
index 10fbc9d..0000000
--- a/includes/video.features.inc
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-
-// include the preset file
-module_load_include('inc', 'video', 'includes/video.preset');
-
-/**
- * Implementation of hook_features_export_options().
- */
-function video_features_export_options() {
- $options = array();
- foreach (video_preset_get_presets () as $preset) {
- $options[$preset['name']] = $preset['name'];
- }
- return $options;
-}
-
-/**
- * Implementation of hook_features_export().
- */
-function video_features_export($data, &$export, $module_name = '') {
- foreach ($data as $preset) {
- $export['features']['video'][$preset] = $preset;
- }
-}
-
-/**
- * Implementation of hook_features_export_render().
- */
-function video_features_export_render($module_name, $data) {
- $items = array();
- foreach ($data as $key) {
- $preset = video_get_preset($key);
- unset($preset['pid']);
- $items[$key] = $preset;
- }
- $code = " \$items = " . features_var_export($items, ' ') . ";\n";
- $code .= ' return $items;';
- return array('video_default_presets' => $code);
-}
-
-/**
- * Implementation of hook_features_revert().
- */
-function video_features_revert($module) {
- if ($default_presets = features_get_default('video', $module)) {
- foreach (array_keys($default_presets) as $default_preset) {
- video_preset_delete($default_preset);
- }
- }
-}
diff --git a/includes/video.field.inc b/includes/video.field.inc
deleted file mode 100644
index a342bc4..0000000
--- a/includes/video.field.inc
+++ /dev/null
@@ -1,424 +0,0 @@
-<?php
-
-/**
- * @file
- * Implement an video field, based on the file module's file field.
- */
-
-/**
- * Implements hook_field_info().
- */
-function video_field_info() {
- return array(
- 'video' => array(
- 'label' => t('Video'),
- 'description' => t('This field stores the ID of an video file as an integer value.'),
- 'settings' => array(
- 'uri_scheme' => variable_get('file_default_scheme', 'public'),
- 'autoconversion' => 0,
- 'autothumbnail' => 'no',
- 'default_video_thumbnail' => 0,
- 'preview_video_thumb_style' => 'thumbnail',
- ),
- 'instance_settings' => array(
- 'file_extensions' => 'mp4 ogg avi mov wmv flv',
- 'file_directory' => 'videos/original',
- 'max_filesize' => '',
- 'default_dimensions' => '640x350',
- 'default_player_dimensions' => '640x350'
- ),
- 'default_widget' => 'video_upload',
- 'default_formatter' => 'video',
- ),
- );
-}
-
-/**
- * Implements hook_field_settings_form().
- */
-function video_field_settings_form($field, $instance) {
- $defaults = field_info_field_settings($field['type']);
- $settings = array_merge($defaults, $field['settings']);
- $scheme_options = array();
- foreach (file_get_stream_wrappers(STREAM_WRAPPERS_WRITE_VISIBLE) as $scheme => $stream_wrapper) {
- $scheme_options[$scheme] = $stream_wrapper['name'];
- }
- $form['uri_scheme'] = array(
- '#type' => 'radios',
- '#title' => t('Upload destination'),
- '#options' => $scheme_options,
- '#default_value' => $settings['uri_scheme'],
- '#description' => t('Select where the final files should be stored. Private file storage has significantly more overhead than public files, but allows restricted access to files within this field.'),
- );
- $form = $form + video_default_field_settings($settings);
- return $form;
-}
-
-/**
- * Element specific validation for video default value.
- *
- */
-function video_field_default_thumbnail_validate($element, &$form_state) {
- $settings = $form_state['values']['field']['settings'];
- // Make the file permanent and store it in the form.
- if (!empty($settings['default_video_thumbnail']['fid'])) {
- $file = file_load($settings['default_video_thumbnail']['fid']);
- $file->status |= FILE_STATUS_PERMANENT;
- $file = file_save($file);
- $form_state['values']['field']['settings']['default_video_thumbnail'] = (array) $file;
- }
-}
-
-/**
- * Implements hook_field_instance_settings_form().
- */
-function video_field_instance_settings_form($field, $instance) {
- $widget = $instance['widget'];
- $instance_settings = $instance['settings'];
- $settings = $instance['settings'];
- // Use the file field instance settings form as a basis.
- $form = file_field_instance_settings_form($field, $instance);
- // Remove the description option.
- unset($form['description_field']);
- // add settings by widget type
- switch ($instance['widget']['type']) {
- case 'video_upload':
- break;
- case 'video_ftp':
- $form['ftp_path'] = array(
- '#type' => 'textfield',
- '#title' => t('FTP Filepath'),
- '#default_value' => !empty($widget['ftp_path']) ? $widget['ftp_path'] : 'ftpvideos',
- '#description' => t('The subdirectory within the "<em>files/</em>" directory where you have upload the videos for attachment. Once the video is attached it will be moved from this directory to the main files directory.'),
- '#required' => TRUE,
- '#weight' => 3,
- );
- break;
- }
- //default settings
- $default = video_default_instance_settings($settings);
- $form = $default + $form;
- return $form;
-}
-
-/**
- * Implements hook_field_load().
- */
-function video_field_load($entity_type, $entities, $field, $instances, $langcode, &$items, $age) {
- file_field_load($entity_type, $entities, $field, $instances, $langcode, $items, $age);
-}
-
-/**
- * Implements hook_field_prepare_view().
- */
-function video_field_prepare_view($entity_type, $entities, $field, $instances, $langcode, &$items) {
- // If there are no files specified at all, use the default.
- foreach ($entities as $id => $entity) {
- if (empty($items[$id]) && $field['settings']['default_video_thumbnail']) {
- if ($file = file_load($field['settings']['default_video_thumbnail'])) {
- $items[$id][0] = (array) $file + array(
- 'is_default' => TRUE,
- );
- }
- }
- }
-}
-
-/**
- * Implements hook_field_presave().
- */
-function video_field_presave($entity_type, $entity, $field, $instance, $langcode, &$items) {
- file_field_presave($entity_type, $entity, $field, $instance, $langcode, $items);
-}
-
-/**
- * Implements hook_field_insert().
- */
-function video_field_insert($entity_type, $entity, $field, $instance, $langcode, &$items) {
- file_field_insert($entity_type, $entity, $field, $instance, $langcode, $items);
-}
-
-/**
- * Implements hook_field_update().
- */
-function video_field_update($entity_type, $entity, $field, $instance, $langcode, &$items) {
- file_field_update($entity_type, $entity, $field, $instance, $langcode, $items);
-}
-
-/**
- * Implements hook_field_delete().
- */
-function video_field_delete($entity_type, $entity, $field, $instance, $langcode, &$items) {
- file_field_delete($entity_type, $entity, $field, $instance, $langcode, $items);
-}
-
-/**
- * Implements hook_field_delete_revision().
- */
-function video_field_delete_revision($entity_type, $entity, $field, $instance, $langcode, &$items) {
- file_field_delete_revision($entity_type, $entity, $field, $instance, $langcode, $items);
-}
-
-/**
- * Implements hook_field_is_empty().
- */
-function video_field_is_empty($item, $field) {
- return file_field_is_empty($item, $field);
-}
-
-/**
- * Implements hook_field_widget_info().
- */
-function video_field_widget_info() {
- return array(
- 'video_upload' => array(
- 'label' => t('Video Upload'),
- 'field types' => array('video'),
- 'settings' => array(
- 'progress_indicator' => 'throbber',
- ),
- 'behaviors' => array(
- 'multiple values' => FIELD_BEHAVIOR_CUSTOM,
- 'default value' => FIELD_BEHAVIOR_NONE,
- ),
- ),
- 'video_ftp' => array(
- 'label' => t('Video FTP'),
- 'field types' => array('video'),
- 'settings' => array(
- 'progress_indicator' => 'throbber',
- ),
- 'behaviors' => array(
- 'multiple values' => FIELD_BEHAVIOR_CUSTOM,
- 'default value' => FIELD_BEHAVIOR_NONE,
- ),
- ),
- );
-}
-
-/**
- * Implements hook_field_widget_settings_form().
- */
-function video_field_widget_settings_form($field, $instance) {
- // Use the file widget settings form.
- $form = file_field_widget_settings_form($field, $instance);
-
- return $form;
-}
-
-/**
- * Implements hook_field_widget_form().
- */
-function video_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
-// return;
- // Add display_field setting to field because file_field_widget_form() assumes it is set.
- $field['settings']['display_field'] = 0;
-
- $elements = file_field_widget_form($form, $form_state, $field, $instance, $langcode, $items, $delta, $element);
- $settings = $instance['settings'];
- foreach (element_children($elements) as $delta) {
-
- // If not using custom extension validation, ensure this is an image.
- $supported_extensions = array('mp4', 'ogg', 'avi', 'mov', 'wmv', 'flv');
- $extensions = isset($elements[$delta]['#upload_validators']['file_validate_extensions'][0]) ? $elements[$delta]['#upload_validators']['file_validate_extensions'][0] : implode(' ', $supported_extensions);
- $extensions = array_intersect(explode(' ', $extensions), $supported_extensions);
- $elements[$delta]['#upload_validators']['file_validate_extensions'][0] = implode(' ', $extensions);
-
- // Add all extra functionality provided by the image widget.
- $elements[$delta]['#process'][] = 'video_field_widget_process';
- }
-
- if ($field['cardinality'] == 1) {
- // If there's only one field, return it as delta 0.
- if (empty($elements[0]['#default_value']['fid'])) {
- $elements[0]['#description'] = theme('file_upload_help', array('description' => $instance['description'], 'upload_validators' => $elements[0]['#upload_validators']));
- }
- } else {
- $elements['#file_upload_description'] = theme('file_upload_help', array('upload_validators' => $elements[0]['#upload_validators']));
- }
- return $elements;
-}
-
-/**
- * An element #process callback for the image_image field type.
- *
- * Expands the image_image type to include the alt and title fields.
- */
-function video_field_widget_process($element, &$form_state, $form) {
- $item = $element['#value'];
- $item['fid'] = $element['fid']['#value'];
- $field = field_widget_field($element, $form_state);
- $instance = field_widget_instance($element, $form_state);
- $settings = $field['settings'];
- $element['#theme'] = 'video_widget';
- $element['#attached']['css'][] = drupal_get_path('module', 'video') . '/css/video.css';
- $element['preview'] = array();
- // preview the video thumbnail
-// if (isset($element['preview']) && $element['#value']['fid'] != 0) {
-// $element['preview']['#value'] = theme('video_widget_preview', $element['#value']);
-// }
- // Add the image preview.
- if ($settings['default_video_thumbnail'] && $element['#value']['fid'] != 0) {
- $default_thumbnail = file_load($settings['default_video_thumbnail']);
-// $element['preview'] = array(
-// '#type' => 'markup',
-// '#markup' => theme('image_style', array('style_name' => $settings['preview_video_thumb_style'], 'path' => $default_thumbnail->uri)),
-// );
- }
- // Title is not necessary for each individual field.
- if ($field['cardinality'] != 1) {
- unset($element['#title']);
- }
- // add file elements by widget type
- switch ($instance['widget']['type']) {
- case 'video_upload':
- break;
- case 'video_ftp':
- break;
- }
- // Create our thumbnails
- video_thumb_process($element, $form_state);
-
-
- // Add our extra fields if in preview mode
- if (!empty($item['fid'])) {
- video_widget_element_settings($element, $form_state);
- }
-
- // Lets use the clicked_button #submit[0] value here instead and see how that works out for now...
- if ($form_state['submitted'] == 1) {
- video_widget_process($element, $form_state);
- }
- return $element;
-}
-
-/**
- * Formatters
- */
-
-/**
- * Implementation of CCK's hook_field_formatter_info().
- */
-function video_field_formatter_info() {
- $formatters = array(
- 'video' => array(
- 'label' => t('Video'),
- 'field types' => array('video'),
- 'settings' => array('video_style' => '', 'video_link' => ''),
- ),
- 'video_thumbnail' => array(
- 'label' => t('Video thumbnail'),
- 'field types' => array('video'),
- 'settings' => array('video_style' => '', 'video_link' => ''),
- ),
- //'video_colorbox' => array(
- // 'label' => t('Video Thumbnail to Colorbox'),
- // 'field types' => array('filefield'),
- // 'description' => t('Displays the video thumbnail and adds colorbox support.'),
- //),
-// 'video_media_js' => array(
-// 'label' => t('Video inject with jMedia'),
-// 'field types' => array('video'),
-// 'description' => t('Displays the video by using jmedia javascript.'),
-// ),
- );
- return $formatters;
-}
-
-/**
- * Implements hook_field_formatter_settings_form().
- */
-function video_field_formatter_settings_form($field, $instance, $view_mode, $form, &$form_state) {
- $display = $instance['display'][$view_mode];
- $settings = $display['settings'];
-
- $image_styles = image_style_options(FALSE);
- $element['video_style'] = array(
- '#title' => t('Video thumbnail style'),
- '#type' => 'select',
- '#default_value' => $settings['video_style'],
- '#empty_option' => t('None (original video thumbnail)'),
- '#options' => $image_styles,
- );
-
- $link_types = array(
- 'content' => t('Content'),
- 'file' => t('File'),
- );
- $element['video_link'] = array(
- '#title' => t('Link video or video thumbanil to'),
- '#type' => 'select',
- '#default_value' => $settings['video_link'],
- '#empty_option' => t('Nothing'),
- '#options' => $link_types,
- );
-
- return $element;
-}
-
-/**
- * Implements hook_field_formatter_settings_summary().
- */
-function video_field_formatter_settings_summary($field, $instance, $view_mode) {
- $display = $instance['display'][$view_mode];
- $settings = $display['settings'];
-
- $summary = array();
-
- $image_styles = image_style_options(FALSE);
- // Unset possible 'No defined styles' option.
- unset($image_styles['']);
- // Styles could be lost because of enabled/disabled modules that defines
- // their styles in code.
- if (isset($image_styles[$settings['video_style']])) {
- $summary[] = t('Video thumbnail style: @style', array('@style' => $image_styles[$settings['video_style']]));
- } else {
- $summary[] = t('Original video thumbnail');
- }
-
- $link_types = array(
- 'content' => t('Linked to content'),
- 'file' => t('Linked to video file'),
- );
- // Display this setting only if image is linked.
- if (isset($link_types[$settings['video_link']])) {
- $summary[] = $link_types[$settings['video_link']];
- }
-
- return implode('<br />', $summary);
-}
-
-/**
- * Implements hook_field_formatter_view().
- */
-function video_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
- $element = array();
-
- // Check if the formatter involves a link.
- if ($display['settings']['video_link'] == 'content') {
- $uri = entity_uri($entity_type, $entity);
- } elseif ($display['settings']['video_link'] == 'file') {
- $link_file = TRUE;
- }
-
- // set the display
- $theme = $display['type'];
- foreach ($items as $delta => $item) {
- if (isset($link_file)) {
- $uri = array(
- 'path' => file_create_url($item['uri']),
- 'options' => array(),
- );
- }
- $element[$delta] = array(
- '#theme' => $theme,
- '#item' => $item,
- '#video_style' => $display['settings']['video_style'],
- '#path' => isset($uri) ? $uri : '',
- '#entity' => $entity,
- '#field' => $field,
- '#instance' => $instance
- );
- }
- return $element;
-} \ No newline at end of file
diff --git a/includes/video.preset.inc b/includes/video.preset.inc
deleted file mode 100644
index 4036c82..0000000
--- a/includes/video.preset.inc
+++ /dev/null
@@ -1,790 +0,0 @@
-<?php
-
-define('VIDEO_PRESET_MAX_LENGTH', 64);
-
-/**
- * This is used to add all the other settings that you need to declare in your preset.
- * The preset object is passed to this form, so you can use that data to populate the default values
- * for your form elements by using $preset['settings']['param2'].
- *
- * @param <array> - The preset object.
- * @return <array> - The additional form settings that you would like to add to your preset.
- */
-function video_preset_default_form($form, &$form_state, $preset) {
- $form = array();
- $form['settings']['device_profile'] = array(
- '#type' => 'fieldset',
- '#title' => t('Output parameter'),
- '#description' => t('All output settings are optional. We choose sensible defaults for web and iPhone playback.'),
- '#collapsible' => TRUE,
- '#collapsed' => TRUE
- );
- $form['settings']['device_profile']['device_profile'] = array(
- '#type' => 'select',
- '#title' => t('Device profile'),
- '#description' => t('A profile for your target device.'),
- '#options' => array(
- '0' => 'None',
- 'mobile/advanced' => 'mobile/advanced',
- 'mobile/baseline' => 'mobile/baseline',
- 'mobile/legacy' => 'mobile/legacy',
- 'v1/mobile/advanced' => 'v1/mobile/advanced',
- 'v1/mobile/baseline' => 'v1/mobile/baseline',
- 'v1/mobile/legacy' => 'v1/mobile/legacy',
- 'v2/mobile/legacy' => 'v2/mobile/legacy'
- ),
- '#default_value' => (!empty($preset['settings']['device_profile'])) ? $preset['settings']['device_profile'] : 0
- );
- // video settings
- $form['settings']['video'] = array(
- '#type' => 'fieldset',
- '#title' => t('Video settings'),
- '#collapsible' => TRUE,
- '#collapsed' => FALSE
- );
- $form['settings']['video']['video_codec'] = array(
- '#type' => 'select',
- '#title' => t('Video codec'),
- '#description' => t('The video codec used in the video file can affect the ability to play the video on certain devices. The default codec used is H.264.'),
- '#options' => array(
- 'h264' => 'H.264 (default)',
- 'vp8' => 'VP8',
- 'theora' => 'Theora',
- 'vp6' => 'VP6',
- 'mpeg4' => 'MPEG-4',
- 'wmv' => 'WMV'
- ),
- '#default_value' => (!empty($preset['settings']['video_codec'])) ? $preset['settings']['video_codec'] : 'h264'
- );
- $form['settings']['video']['video_quality'] = array(
- '#type' => 'select',
- '#title' => t('Video quality'),
- '#description' => t('A target video quality. Affects bitrate and file size.'),
- '#options' => array(
- '1 - Poor quality (smaller file)',
- '2',
- '3 (default)',
- '4',
- '5 - High quality (larger file)'
- ),
- '#default_value' => (!empty($preset['settings']['video_quality'])) ? $preset['settings']['video_quality'] : 2
- );
- $form['settings']['video']['video_speed'] = array(
- '#type' => 'select',
- '#title' => t('Video speed'),
- '#description' => t('Speed of encoding. Affects compression.'),
- '#options' => array(
- '1 - Slow (better compression)',
- '2',
- '3 (default)',
- '4',
- '5 - Fast (worse compression)'
- ),
- '#default_value' => (!empty($preset['settings']['video_speed'])) ? $preset['settings']['video_speed'] : 2
- );
- $form['settings']['video']['width'] = array(
- '#type' => 'textfield',
- '#title' => t('Width'),
- '#description' => t('The maximum width of the output video (in pixels).'),
- '#default_value' => !empty($preset['settings']['width']) ? $preset['settings']['width'] : ''
- );
- $form['settings']['video']['height'] = array(
- '#type' => 'textfield',
- '#title' => t('Height'),
- '#description' => t('The maximum height of the output video (in pixels).'),
- '#default_value' => !empty($preset['settings']['height']) ? $preset['settings']['height'] : ''
- );
- $form['settings']['video']['video_aspectmode'] = array(
- '#type' => 'select',
- '#title' => t('Aspect mode'),
- '#description' => t('What to do when aspect ratio of input file does not match the target width/height aspect ratio.'),
- '#options' => array(
- 'preserve' => 'Preserve aspect ratio (default)',
- 'crop' => 'Crop to fit output aspect ratio',
- 'pad' => 'Pad (letterbox) to fit output aspect ratio',
- 'stretch' => 'Stretch (distort) to output aspect ratio'
- ),
- '#default_value' => (!empty($preset['settings']['video_aspectmode'])) ? $preset['settings']['video_aspectmode'] : 'preserve'
- );
- $form['settings']['video']['video_upscale'] = array(
- '#type' => 'checkbox',
- '#title' => t('Upscale'),
- '#description' => t('If the input file is smaller than the target output, should the file be upscaled to the target size?'),
- '#default_value' => !empty($preset['settings']['video_upscale']) ? $preset['settings']['video_upscale'] : ''
- );
- // audio settings
- $form['settings']['audio'] = array(
- '#type' => 'fieldset',
- '#title' => t('Audio settings'),
- '#collapsible' => TRUE,
- '#collapsed' => TRUE
- );
- $form['settings']['audio']['audio_codec'] = array(
- '#type' => 'select',
- '#title' => t('Audio codec'),
- '#description' => t('The audio codec to be used.'),
- '#options' => array(
- 'aac' => 'AAC (default for most cases)',
- 'mp3' => 'MP3',
- 'vorbis' => 'Vorbis (default for VP8 and Theora)',
- 'wma' => 'WMA'
- ),
- '#default_value' => (!empty($preset['settings']['audio_codec'])) ? $preset['settings']['audio_codec'] : 'h264'
- );
- $form['settings']['audio']['audio_quality'] = array(
- '#type' => 'select',
- '#title' => t('Audio quality'),
- '#description' => t('A target audio quality. Affects bitrate and file size.'),
- '#options' => array(
- '1 - Poor quality (smaller file)',
- '2',
- '3 (default)',
- '4',
- '5 - High quality (larger file)'
- ),
- '#default_value' => (!empty($preset['settings']['audio_quality'])) ? $preset['settings']['audio_quality'] : 2
- );
- // advanced video settings
- $form['settings']['adv_video'] = array(
- '#type' => 'fieldset',
- '#title' => t('Advanced video settings'),
- '#collapsible' => TRUE,
- '#collapsed' => TRUE
- );
- $form['settings']['adv_video']['deinterlace'] = array(
- '#type' => 'select',
- '#title' => t('Deinterlace'),
- '#description' => t('Note that detect mode will auto-detect and deinterlace interlaced content.'),
- '#options' => array(
- 'detect' => 'Detect (default)',
- 'on' => 'On (reduces quality of non-interlaced content)',
- 'off' => 'Off'
- ),
- '#default_value' => (!empty($preset['settings']['deinterlace'])) ? $preset['settings']['deinterlace'] : 'detect'
- );
- $form['settings']['adv_video']['max_frame_rate'] = array(
- '#type' => 'textfield',
- '#title' => t('Maximum frame rate'),
- '#description' => t('A maximum frame rate cap (in frames per second).'),
- '#default_value' => !empty($preset['settings']['max_frame_rate']) ? $preset['settings']['max_frame_rate'] : ''
- );
- $form['settings']['adv_video']['frame_rate'] = array(
- '#type' => 'textfield',
- '#title' => t('Frame rate'),
- '#description' => t('Force a specific output frame rate (in frames per second). For best quality, do not use this setting.'),
- '#default_value' => !empty($preset['settings']['frame_rate']) ? $preset['settings']['frame_rate'] : ''
- );
- $form['settings']['adv_video']['frame_rate'] = array(
- '#type' => 'textfield',
- '#title' => t('Frame rate'),
- '#description' => t('Force a specific output frame rate (in frames per second). For best quality, do not use this setting.'),
- '#default_value' => !empty($preset['settings']['frame_rate']) ? $preset['settings']['frame_rate'] : ''
- );
- $form['settings']['adv_video']['video_bitrate'] = array(
- '#type' => 'textfield',
- '#title' => t('Video bitrate'),
- '#description' => t('A target bitrate in kbps. Not necessary if you select a Video Quality setting, unless you want to target a specific bitrate.'),
- '#default_value' => !empty($preset['settings']['video_bitrate']) ? $preset['settings']['video_bitrate'] : ''
- );
- $form['settings']['adv_video']['bitrate_cap'] = array(
- '#type' => 'textfield',
- '#title' => t('Bitrate cap'),
- '#description' => t('A bitrate cap in kbps, used for streaming servers.'),
- '#default_value' => !empty($preset['settings']['bitrate_cap']) ? $preset['settings']['bitrate_cap'] : ''
- );
- $form['settings']['adv_video']['buffer_size'] = array(
- '#type' => 'textfield',
- '#title' => t('Buffer size'),
- '#description' => t('The buffer size for the bitrate cap in kbps.'),
- '#default_value' => !empty($preset['settings']['buffer_size']) ? $preset['settings']['buffer_size'] : ''
- );
- $form['settings']['adv_video']['one_pass'] = array(
- '#type' => 'checkbox',
- '#title' => t('One pass'),
- '#description' => t('Force one-pass encoding when targeting a specific video_bitrate. True or False.'),
- '#default_value' => !empty($preset['settings']['one_pass']) ? $preset['settings']['one_pass'] : ''
- );
- $form['settings']['adv_video']['skip_video'] = array(
- '#type' => 'checkbox',
- '#title' => t('Skip video'),
- '#description' => t('The video track will be omitted from the output. You can still specify a video format, however, no video track will be present in the resulting file.'),
- '#default_value' => !empty($preset['settings']['skip_video']) ? $preset['settings']['skip_video'] : ''
- );
- // advanced audio settings
- $form['settings']['adv_audio'] = array(
- '#type' => 'fieldset',
- '#title' => t('Advanced audio settings'),
- '#collapsible' => TRUE,
- '#collapsed' => TRUE
- );
- $form['settings']['adv_audio']['audio_bitrate'] = array(
- '#type' => 'textfield',
- '#title' => t('Audio bitrate'),
- '#description' => t('The overall audio bitrate specified as kilobits per second (kbps, e.g. 96 or 160). This value can\'t exceed 160 kbps per channel. 96-160 is usually a good range for stereo output.'),
- '#default_value' => !empty($preset['settings']['audio_bitrate']) ? $preset['settings']['audio_bitrate'] : ''
- );
- $form['settings']['adv_audio']['audio_channels'] = array(
- '#type' => 'select',
- '#title' => t('Audio channels'),
- '#description' => t('By default we will choose the lesser of the number of audio channels in the input file or 2 (stereo).'),
- '#options' => array(
- 1 => '1 - Mono',
- 2 => '2 - Stereo (default)'
- ),
- '#default_value' => (!empty($preset['settings']['audio_channels'])) ? $preset['settings']['audio_channels'] : 2
- );
- $form['settings']['adv_audio']['audio_sample_rate'] = array(
- '#type' => 'textfield',
- '#title' => t('Audio sample rate'),
- '#description' => t('The sample rate of the audio in hertz. Manually setting this may cause problems, depending on the selected bitrate and number of channels.'),
- '#default_value' => !empty($preset['settings']['audio_sample_rate']) ? $preset['settings']['audio_sample_rate'] : ''
- );
- $form['settings']['adv_audio']['skip_audio'] = array(
- '#type' => 'checkbox',
- '#title' => t('Skip audio'),
- '#description' => t('The audio track will be omitted from the output. You must specify a video format and no audio track will be present in the resulting file.'),
- '#default_value' => !empty($preset['settings']['skip_audio']) ? $preset['settings']['skip_audio'] : ''
- );
- // video optimizations
- $form['settings']['vid_optimization'] = array(
- '#type' => 'fieldset',
- '#title' => t('Video Optimization'),
- '#collapsible' => TRUE,
- '#collapsed' => TRUE
- );
- $form['settings']['vid_optimization']['autolevels'] = array(
- '#type' => 'checkbox',
- '#title' => t('Autolevels'),
- '#description' => t('Automatic brightness / contrast correction.'),
- '#default_value' => !empty($preset['settings']['autolevels']) ? $preset['settings']['autolevels'] : ''
- );
- $form['settings']['vid_optimization']['deblock'] = array(
- '#type' => 'checkbox',
- '#title' => t('Deblock'),
- '#description' => t('Apply deblocking filter. Useful for highly compressed or blocky input videos.'),
- '#default_value' => !empty($preset['settings']['deblock']) ? $preset['settings']['deblock'] : ''
- );
- $form['settings']['vid_optimization']['denoise'] = array(
- '#type' => 'select',
- '#title' => t('Denoise'),
- '#description' => t('Apply denoise filter. Generally results in slightly better compression, and slightly slower encoding. Beware of any value higher than "Weak" (unless you\'re encoding animation).'),
- '#options' => array(
- 0 => 'None',
- 'weak' => 'Weak - usually OK for general use',
- 'medium' => 'Medium',
- 'strong' => 'Strong - beware',
- 'strongest' => 'Strongest - beware, except for Anime'
- ),
- '#default_value' => (!empty($preset['settings']['denoise'])) ? $preset['settings']['denoise'] : 2
- );
- // Segmented Streaming
- $form['settings']['segmented_streaming'] = array(
- '#type' => 'fieldset',
- '#title' => t('Segmented Streaming'),
- '#collapsible' => TRUE,
- '#collapsed' => TRUE
- );
- $form['settings']['segmented_streaming']['segmented_type'] = array(
- '#type' => 'select',
- '#title' => t('Type'),
- '#description' => t('Set to segmented for HTTP Live Streaming.'),
- '#options' => array(
- 0 => 'Standard',
- 'segmented' => 'segmented'
- ),
- '#default_value' => (!empty($preset['settings']['segmented_type'])) ? $preset['settings']['segmented_type'] : 0
- );
- $form['settings']['segmented_streaming']['segmented_seconds'] = array(
- '#type' => 'textfield',
- '#title' => t('Segment Seconds'),
- '#description' => t('The maximum duration of each segment in segmented outputs.'),
- '#default_value' => !empty($preset['settings']['segmented_seconds']) ? $preset['settings']['segmented_seconds'] : ''
- );
- // Create clip
- $form['settings']['create_clip'] = array(
- '#type' => 'fieldset',
- '#title' => t('Create Clip'),
- '#collapsible' => TRUE,
- '#collapsed' => TRUE
- );
- $form['settings']['create_clip']['clip_start'] = array(
- '#type' => 'textfield',
- '#title' => t('Start clip'),
- '#description' => t('The starting point of a subclip (in timecode or number of seconds).'),
- '#default_value' => !empty($preset['settings']['clip_start']) ? $preset['settings']['clip_start'] : ''
- );
- $form['settings']['create_clip']['clip_length'] = array(
- '#type' => 'textfield',
- '#title' => t('Clip length '),
- '#description' => t('The length of the subclip (in timecode or number of seconds).'),
- '#default_value' => !empty($preset['settings']['clip_length']) ? $preset['settings']['clip_length'] : ''
- );
- // Command line parameters
- $form['settings']['command_line'] = array(
- '#type' => 'fieldset',
- '#title' => t('Command line options'),
- '#collapsible' => TRUE,
- '#collapsed' => FALSE
- );
- $tokes = array(
- '!cmd_path - Path to transcoder',
- '!videofile - Input video file',
- '!convertfile - Output video file',
- '!width - Width of output video',
- '!height - Height of output video'
- );
- $form['settings']['command_line']['cli_code'] = array(
- '#type' => 'textarea',
- '#title' => t('Command line codes to run'),
- '#description' => t('Please add command line codes each to run separated by a new line.') . theme('item_list', array('items' => $tokes, 'title' => 'Available Tokes')),
- '#default_value' => !empty($preset['settings']['cli_code']) ? $preset['settings']['cli_code'] : '!cmd_path -i !videofile -s !widthx!height -r 15 -b 250 -ar 22050 -ab 48 !convertfile'
- );
- return $form;
-}
-
-/**
- * Menu callback: video Module administration.
- */
-function video_presets_overview() {
- $presets = video_preset_get_presets();
-
- if (count($presets) > 0) {
- $header = array(t('Preset Name'), t('Description'), array('data' => t('Operations'), 'colspan' => '3'));
- $rows = array();
- foreach ($presets as $pid => $preset) {
- $row = array();
- $row[] = check_plain($preset['name']);
- $row[] = array('data' => filter_xss_admin($preset['description']), 'class' => 'description');
- $row[] = array('data' => l(t('edit'), 'admin/config/media/video/presets/preset/' . $preset['name']));
-
- if (!isset($preset['default'])) {
- $row[] = array('data' => l(t('delete'), 'admin/config/media/video/presets/preset/' . $preset['name'] . '/delete'));
- }
-
- $row[] = array('data' => l(t('export'), 'admin/config/media/video/presets/preset/' . $preset['name'] . '/export'));
- $rows[] = $row;
- }
- return theme('table', array('header' => $header, 'rows' => $rows));
- } else {
- return t('No Preset were found. Please use the !create_link link to create
- a new video preset, or upload an existing Feature to your modules directory.',
- array('!create_link' => l(t('Create Video Preset'), 'admin/config/media/video/presets/add')));
- }
-}
-
-/**
- * Preset form
- * @param <type> $form
- * @param <type> $form_state
- * @param <type> $preset
- * @return string
- */
-function video_preset_form($form, &$form_state, $preset = false) {
- $form = array();
- // basic preset details
- $form['preset'] = array(
- '#type' => 'fieldset',
- '#title' => t('Preset information'),
- '#weight' => -10,
- );
- if (isset($preset['pid'])) {
- $form['preset']['pid'] = array(
- '#type' => 'value',
- '#value' => $preset['pid'],
- );
- } elseif (video_is_default_preset($preset['name'])) {
- $form['preset']['default'] = array(
- '#type' => 'value',
- '#value' => TRUE,
- );
- }
- $form['preset']['name'] = array(
- '#type' => 'textfield',
- '#title' => t('Preset name'),
- '#maxlength' => VIDEO_PRESET_MAX_LENGTH,
- '#description' => t('Spaces are NOT allowed; punctuation is not allowed except for periods, hyphens, apostrophes, and underscores.'),
- '#required' => TRUE,
- '#weight' => -10,
- '#element_validate' => array('_video_preset_name_validate'),
- '#default_value' => !empty($preset['name']) ? $preset['name'] : ''
- );
-
- $form['preset']['description'] = array(
- '#type' => 'textfield',
- '#title' => t('Description'),
- '#description' => t('Add a brief description to your preset name.'),
- '#weight' => -9,
- '#default_value' => !empty($preset['description']) ? $preset['description'] : ''
- );
-
- // Preset settings
- $form += video_preset_default_form($form, $form_state, $preset);
-
- // Buttons
- $form['submit'] = array(
- '#type' => 'submit',
- '#value' => t('Save Preset'),
- '#weight' => 30,
- );
-
- $form['delete'] = array(
- '#type' => 'submit',
- '#value' => t('Delete'),
- '#weight' => 40,
- '#submit' => array('video_preset_delete_submit'),
- );
-
- // Add the form submit handler.
- $form['#submit'][] = 'video_preset_submit';
- $form['#validate'][] = 'video_preset_validate';
- return $form;
-}
-
-/**
- * Validation for the preset form.
- */
-function video_preset_validate($form, &$form_state) {
-
-}
-
-/**
- * Flatten the settings array.
- *
- * @param <type> $array
- * @param <type> $return
- * @return <type>
- */
-function video_preset_array_flatten($array, $return=array()) {
- foreach ($array as $key => $value) {
- if (is_array($value)) {
- $return = video_preset_array_flatten($value, $return);
- } else {
- $return[$key] = $value;
- }
- }
- return $return;
-}
-
-/**
- * Submit handler for the preset form.
- */
-function video_preset_submit($form, &$form_state) {
- $preset = array();
- if (isset($form_state['values']['pid'])) {
- $preset['pid'] = $form_state['values']['pid'];
- }
- $preset['name'] = $form_state['values']['name'];
- $preset['description'] = $form_state['values']['description'];
- // unset unwanted values saved to database
- unset($form_state['values']['pid'], $form_state['values']['name'],
- $form_state['values']['description'], $form_state['values']['submit'],
- $form_state['values']['delete'], $form_state['values']['form_build_id'],
- $form_state['values']['form_token'], $form_state['values']['form_id'],
- $form_state['values']['op']);
- $preset['settings'] = video_preset_array_flatten($form_state['values']);
-
- // Save this preset.
- video_preset_save($preset);
- drupal_set_message(t('Preset !preset successfully saved.', array('!preset' => $preset['name'])));
- $form_state['redirect'] = 'admin/config/media/video/presets';
-}
-
-/**
- * Button sumit function: handle the 'Delete' button on the preset form.
- */
-function video_preset_delete_submit($form, &$form_state) {
- $preset['name'] = $form_state['values']['name'];
- $form_state['redirect'] = 'admin/config/media/video/presets/preset/' . $preset['name'] . '/delete';
-}
-
-/**
- * Menu callback; delete a single preset.
- */
-function video_preset_delete_confirm($form, &$form_state, $preset) {
- $form['name'] = array('#type' => 'value', '#value' => $preset['name']);
- $message = t('Are you sure you want to delete the preset %name?', array('%name' => $preset['name']));
- $caption = '<p>' . t('This action cannot be undone.') . '</p>';
- return confirm_form($form, $message, 'admin/config/media/video/presets', $caption, t('Delete'));
-}
-
-/**
- * Execute preset deletion
- */
-function video_preset_delete_confirm_submit($form, &$form_state) {
- if ($form_state['values']['confirm']) {
- video_preset_delete($form_state['values']['name']);
- }
-
- $form_state['redirect'] = 'admin/config/media/video/presets';
-}
-
-/**
- * Validation for the preset form.
- */
-function _video_preset_name_validate($element, &$form_state) {
- $error = video_validate_preset_name($form_state['values']['name']);
- if ($error && !isset($form_state['values']['pid']) && !isset ($form_state['values']['default'])) {
- form_set_error('name', $error);
- }
-}
-
-/**
- * Import's a preset.
- */
-function video_preset_import_form($form, &$form_state) {
- $form['preset'] = array(
- '#title' => t('Preset Code'),
- '#type' => 'textarea',
- '#rows' => 10,
- '#description' => t('Copy the export text and paste it into this text field to import a new preset.'),
- );
-
- $form['submit'] = array(
- '#type' => 'submit',
- '#value' => t('Import Preset'),
- '#weight' => 30,
- );
-
- $form['#submit'][] = 'video_preset_import_submit';
- $form['#validate'][] = 'video_preset_import_validate';
-
- return $form;
-}
-
-/**
- * Validation for the preset import form.
- */
-function video_preset_import_validate($form, &$form_state) {
- $preset = '';
-
- // Get the preset that they declared in the text field.
- ob_start();
- eval($form_state['values']['preset']);
- ob_end_clean();
-
- if (is_array($preset)) {
- $name = isset($preset['name']) ? $preset['name'] : '';
- if ($error = video_validate_preset_name($name)) {
- form_set_error('name', $error);
- }
- } else {
- form_set_error('name', 'Invalid preset import.');
- }
-
- $form_state['preset'] = &$preset;
-}
-
-/**
- * Submit handler for the preset import form.
- */
-function video_preset_import_submit($form, &$form_state) {
- $preset = $form_state['preset'];
- video_preset_save($preset);
- $form_state['redirect'] = 'admin/config/media/video/presets/preset/' . $preset['name'];
-}
-
-/**
- * The preset export form.
- */
-function video_preset_export_form($form, &$form_state, $preset) {
- // Unset the unnecessary elements.
- unset($preset['pid']);
- unset($preset['default']);
-
- // Get the code string representation.
- $code = var_export($preset, true);
-
- // Make sure to format the arrays like drupal.
- $code = str_replace("=> \n ", '=> ', $code);
-
- // Add the preset variable.
- $code = '$preset = ' . $code . ';';
-
- $lines = substr_count($code, "\n");
- $form['export'] = array(
- '#title' => t('Export Preset'),
- '#type' => 'textarea',
- '#value' => $code,
- '#rows' => $lines,
- '#description' => t('Copy the export text and paste it into another preset using the import function.'),
- );
-
- // Return the form.
- return $form;
-}
-
-/**
- * Get's the player settings for the given player.
- */
-function video_player_settings_form($preset) {
- $settings_form = $preset['player'] . '_player_settings_form';
- if (function_exists($settings_form)) {
- return $settings_form($preset);
- }
- return array();
-}
-
-/**
- * Title callback for a preset.
- */
-function video_preset_page_title($preset) {
- return $preset['name'];
-}
-
-/**
- * Saves a new preset.
- */
-function video_preset_save($preset) {
- // If they provide the pid, then this needs to be an update.
- $pid = (isset($preset['pid']) && $preset['pid']) ? array('pid') : array();
-
- // Save or update a preset.
- drupal_write_record('video_preset', $preset, $pid);
-}
-
-/**
- * Returns the default presets.
- *
- * @return <type>
- */
-function video_preset_get_default_presets() {
- $default_presets = module_invoke_all('video_default_presets');
- drupal_alter('video_default_presets', $default_presets);
- return $default_presets;
-}
-
-/**
- * Gets a list of all presets.
- */
-function video_preset_get_presets() {
- $presets = array();
- $normal_presets = array();
-
- // Get all the presets from the database.
- $result = db_select('video_preset', 'p')
- ->fields('p')
- ->orderBy('p.name', 'ASC')
- ->execute();
-
- // Iterate through all the presets and structure them in an array.
- foreach ($result as $preset) {
- $preset = (array) $preset;
- $preset['settings'] = $preset['settings'] ? unserialize($preset['settings']) : array();
- $presets[$preset['pid']] = $preset;
- $normal_presets[$preset['name']] = $preset['pid'];
- }
-
- // Now allow other modules to add their default presets.
- foreach (video_preset_get_default_presets () as $preset) {
- // adding default TRUE
- $preset['default'] = TRUE;
- if (!empty($preset['name']) && !isset($normal_presets[$preset['name']])) {
- $presets[$preset['name']] = $preset;
- }
- }
-
- return $presets;
-}
-
-/**
- * Get's the preset.
- */
-function video_get_preset($preset_name) {
- // Get the preset from the database.
- $preset = db_select('video_preset', 'p')
- ->fields('p')
- ->condition('p.name', $preset_name)
- ->execute()
- ->fetchAssoc();
- if ($preset) {
- $preset['settings'] = $preset['settings'] ? unserialize($preset['settings']) : array();
- } else {
- // Get all of the default presets.
- $default_presets = video_preset_get_default_presets();
-
- // Check to see if this preset exists.
- if (isset($default_presets[$preset_name])) {
- // Make this our preset
- $preset = $default_presets[$preset_name];
- }
- }
-
- // Return the preset.
- return $preset;
-}
-
-/**
- * Deletes a preset
- */
-function video_preset_delete($preset_name) {
- // Delete the preset.
- db_delete('video_preset')
- ->condition('name', $preset_name)
- ->execute();
-
- // Rebuild Theme Registry
- drupal_theme_rebuild();
-}
-
-/**
- * Checks to see if another preset is already taken.
- */
-function video_preset_name_exists($preset_name) {
-
- // Get the default presets.
- $default_presets = video_preset_get_default_presets();
-
- // See if there is a default preset name.
- if ($default_presets && isset($default_presets[$preset_name])) {
- return true;
- } else {
- return (bool) db_select('video_preset', 'p')
- ->fields('p')
- ->condition('p.name', $preset_name)
- ->range(0, 1)
- ->execute()
- ->fetchField();
- }
-}
-
-/**
- * Verify the syntax of the given prefix name.
- *
- * Borrowed from the user.module. :)
- */
-function video_validate_preset_name($name) {
- if (!$name) {
- return t('You must enter a preset.');
- }
- if (video_preset_name_exists($name)) {
- return t('The preset name %name is already taken.', array('%name' => $name));
- }
- if (strpos($name, ' ') !== FALSE) {
- return t('The preset name cannot contain a space.');
- }
- if (is_numeric($name[0])) {
- return t('The preset name cannot begin with a number.');
- }
- if (preg_match('/[^a-z0-9_]/i', $name)) {
- return t('The preset name contains an illegal character.');
- }
- if (drupal_strlen($name) > VIDEO_PRESET_MAX_LENGTH) {
- return t('The preset name %name is too long: it must be %max characters or less.', array('%name' => $name, '%max' => VIDEO_PRESET_MAX_LENGTH));
- }
-}
-
-/**
- * Check for default preset
- * @param <type> $preset_name
- * @return <type>
- */
-function video_is_default_preset($preset_name) {
- // Get the default presets.
- $default_presets = video_preset_get_default_presets();
-
- // See if there is a default preset name.
- if ($default_presets && isset($default_presets[$preset_name]))
- return TRUE;
- else
- return FALSE;
-}