Difference between revisions of "Filter Wizard"

From MythTV Official Wiki
Jump to: navigation, search
m (Layout)
m
Line 1: Line 1:
This is a [[Feature Wishlist_(Frontend Addons)|feature request]] for a '''Filter Wizard''' or GUI for selecting and applying filters to recordings.
+
This is a [[Feature Wishlist_(Frontend Addons)|feature request]] for a '''Filter Wizard''' or GUI for selecting and applying filters to recordings.  This feature has a [[Bug_Tracking_System | trac]] entry [http://svn.mythtv.org/trac/ticket/3152 here].
 
    
 
    
 
= Background =
 
= Background =

Revision as of 05:47, 1 March 2007

This is a feature request for a Filter Wizard or GUI for selecting and applying filters to recordings. This feature has a trac entry here.

Background

The functionality to apply filters to recordings already exists in the transcoders profiles, but currently this method is not very user friendly (its just an argument string). Filters can also be applied in the same way on a per channel basis during recording or playback. There is some discussion on the developer mailing list of adding a GUI for filters in the future, but nothing recent. Section 10.4 in the user manual describes the currently available filters.

Developer Threads

Proposed Solution

Add/Remove/Reorder GUI

This would be similar to the Recording Profiles setup screen that would contain a list of applied filters and an (add new filter) item at the bottom. Pressing the arrow key or the menu key would bring up a menu with the options to move the selected filter up in the list (to be applied earlier in the chain), down in the list, or to remove it. Selecting (add new filter) would bring up a new screen with a list of the available filters. Each of these items would then bring up a wizard to walk the user through inputing the required parameters of the filter. Initially, as a test, instead of bringing up the wizard, the selected filter can be added to the chain with the default values.

Add/Remove/Reorder Layout

Screen:                                              Popup Menu:
|----------------------------------------------|     |---------------|
| Filter Chain                                 |     | |-----------| |
| |------------------------------------------| |     | | Move Up   | |
| | User Filter 1                            | |     | |-----------| |
| | ...                                      | |     | |-----------| |
| | User Filter N                            | |     | | Move Down | |
| | (Add New Filter)                         | |     | |-----------| |
| |                                          | |     | |-----------| |
| |                                          | |     | | Remove    | |
| |                                          | |     | |-----------| |
| |                                          | |     |---------------| 
| |                                          | |
| |                                          | |
| |                                          | |
| |                                          | |
| |                                          | |
| |                                          | |
| |------------------------------------------| |   
|----------------------------------------------|   

Filter Selection Layout

Screen:
|----------------------------------------------|
| Filters                                      |
| |------------------------------------------| |
| | Adjust                                   | |
| | Bobdeint                                 | |
| | Crop                                     | |
| | Denoise3d                                | |
| | Forceyuv422p                             | |
| | Forceyv12                                | |
| | Invert                                   | |
| | Kerneldeint                              | | 
| | Onefield                                 | |
| | Quickdnr                                 | |
| |                                          | | 
| |                                          | |
| |                                          | | 
| |                                          | |
| |------------------------------------------| |
|----------------------------------------------|

crop GUI

Inputs

  • Top:
    • Description: (16 x value) rows of pixels on the top are set to black.
    • Default: 1
    • Type: Integer
  • Bottom:
    • Description: (16 x value) rows of pixels on the bottom are set to black.
    • Type: Integer
    • Default: 1
  • Left
    • Description: (16 x value) rows of pixels on the left are set to black.
    • Type: Integer
    • Default: 1
  • Right
    • Description: (16 x value) rows of pixels on the right are set to black.
    • Type: Integer
    • Default: 1

Layout

Screen:
|----------------------------------------------|
| Filters->Crop                                |
|                                              |
|  Top:           |----------------|^          |
|                 |----------------|v          |
|                                              |
|  Bottom:        |----------------|^          |
|                 |----------------|v          |
|                                              |
|  Left:          |----------------|^          |
|                 |----------------|v          |
|                                              |
|  Right:         |----------------|^          |
|                 |----------------|v          |
|----------------------------------------------| 
| <parameter descriptions>                     |
|                                              | 
|----------------------------------------------|
| Cancel |                              | Done |
|----------------------------------------------|

kerneldeint GUI

Inputs

  • Filter Threshold:
    • Description: Adjacent lines differing by more than the threshold value are filtered.
    • Type: Integer
    • Default: 12
  • Skip Chroma:
    • Description: If non-zero then filter only luminance.
    • Type: Integer
    • Default: 0

Layout

denoise3d GUI

Inputs

  • Luma Spatial Filter Strength:
    • Type: Float
    • Default: nil
  • Chroma Spatial Filter Strength:
    • Type: Float
    • Default: nil
  • Luma Temporal Filter Strength:
    • Type: Float
    • Default: nil

Layout

quickdnr GUI

Inputs

  • Luma Threshold 1:
    • Type: Integer
    • Range: 0 - 255
    • Default: nil
  • Luma Threshold 2:
    • Type: Integer
    • Range: 0 - 255
    • Default: nil
  • Chroma Threshold 1:
    • Type: Integer
    • Range: 0 - 255
    • Default: nil
  • Chroma Threshold 2:
    • Type: Integer
    • Range: 0 - 255
    • Default: nil

Layout

onefield GUI

Inputs

  • Field:
    • Description: If set to bottom the bottom field will be kept instead of the top.
    • Type: String

Layout

adjust GUI

This filter is automatically applied to bttv recordings if not already specified in the filter chain. A single -1 parameter disables the filter.

Inputs

  • Luma Minimum Input Value:
    • Type: Integer
    • Default: 16
  • Luma Maximum Input Value:
    • Type: Integer
    • Default: 253
  • Luma Gamma Correction:
    • Type: Float
    • Default: 1
  • Chroma Minimum Input Value:
    • Type: Integer
    • Default: 2
  • Chroma Maximum Input Value:
    • Type: Integer
    • Default: 253
  • Chroma Gamma Correction:
    • Type: Float
    • Default: 1

Layout

Issues

Parameter Storage

Currently all the filter parameters for a given trascoding profile or channel are stored as strings in the database. The transoder profile filter strings are stored in the codecparams table and the channel filter strings are stored in the channel table as either videofilters or outputfilters. Concatenating all of the filter parameters into a single string like is currently done will not be well suited for a GUI. While it would be possible to parse the filter strings in their current form into a list structure in memory, a cleaner approach would probably be to store the filter parameters in a more accessible way in the database.

Input Validation

Some filters may need to be applied in a specific order to work correctly. The current system of applying filters allows the user to create any chain an assumes they know what they are doing. Should the new interface restrict the user to orderings that make sense? If the only valid position for forceyuv422p is at the beginning of the chain then should the interface force it to the top?