Tachyon Frame Rate Conversion

Encoding.com has integrated Cinnafilm's Tachyon — the industry standard for motion-compensated frame rate conversion, telecine (pulldown) handling, and Dark Energy image restoration. Here's how to enable Tachyon in your job requests:

To process an output with Tachyon, set the video settings parameter framerate_method to tachyon and specify the target frame rate with the framerate parameter. Set framerate to copy to keep the source frame rate and use Tachyon only for pulldown handling or Dark Energy restoration.

All parameters of the tachyon_parameters group are optional — any parameter that is not set falls back to Tachyon's automatic behavior, except motion_compensation, which defaults to yes.

The scan type of the Tachyon output follows the video settings parameter force_interlaced: tff or bff make Tachyon deliver interlaced output with that field order, source mirrors the source, and any other value delivers progressive output. Set deinterlacing to no so that Tachyon receives the untouched source.

<?xml version="1.0"?>
<query>
    <userid>[UserID]</userid> <!-- required -->
    <userkey>[UserKey]</userkey> <!-- required -->
    <action>[Action]</action> <!-- required -->
    <source>[SourceFile]</source> <!-- required -->
    <format>
        <output>[OutputFormat]</output> <!-- required -->
        <framerate>[FrameRate|copy]</framerate>
        <framerate_method>tachyon</framerate_method> <!-- required -->
        <tachyon_parameters>
            <motion_compensation>[yes|no]</motion_compensation>
            <motion_compensation_amount>[xlow|low|medium|high|xhigh|auto]</motion_compensation_amount>
            <motion_compensation_fallback_blend_area>[small|medium|large|xlarge|auto]</motion_compensation_fallback_blend_area>
            <motion_compensation_block_size>[4|8|16|32|64|128|256|auto]</motion_compensation_block_size>
            <extreme_motion_compensation_amount>[xlow|low|medium|high|xhigh|auto]</extreme_motion_compensation_amount>
            <extreme_motion_compensation_fallback_blend_area>[small|medium|large|xlarge|auto]</extreme_motion_compensation_fallback_blend_area>
            <extreme_motion_compensation_block_size>[4|8|16|32|64|128|256|auto]</extreme_motion_compensation_block_size>
            <allow_pulldown_removal>[yes|no]</allow_pulldown_removal>
            <pulldown_removal_residual_combing>[yes|no]</pulldown_removal_residual_combing>
            <adjust_for_cartoon>[yes|no]</adjust_for_cartoon>
            <pulldown_removal_increased_sensitivity>[yes|no]</pulldown_removal_increased_sensitivity>
            <allow_2_3_insertion>[yes|no]</allow_2_3_insertion>
            <allow_2_2_insertion>[yes|no]</allow_2_2_insertion>
            <allow_double_frames>[yes|no]</allow_double_frames>
            <allow_4_6_insertion>[yes|no]</allow_4_6_insertion>
            <allow_euro_insertion>[yes|no]</allow_euro_insertion>
            <allow_adaptive_insertion>[yes|no]</allow_adaptive_insertion>
            <overlay_protect>[yes|no]</overlay_protect>
            <overlay_protect_amount>[low|high]</overlay_protect_amount>
            <subtitle_detect>[yes|no]</subtitle_detect>
            <motion_blur>[yes|no]</motion_blur>
            <progressive_scene_cuts>[yes|no]</progressive_scene_cuts>
            <enable_detectors>[yes|no]</enable_detectors>
            <enable_frame_rate_conversion>[yes|no]</enable_frame_rate_conversion>
            <cut_detection_sensitivity>[Sensitivity]</cut_detection_sensitivity>
            <resample_map>[ResampleMap]</resample_map>
            <dark_energy_filter>
                <enable_optimize>[yes|no]</enable_optimize>
                <power_spatial_filter>[disable|xlow|low|medium|high|xhigh|auto]</power_spatial_filter>
                <chroma_noise_removal>[disable|xlow|low|medium|high|xhigh|auto]</chroma_noise_removal>
                <sharpen>[disable|xlow|low|medium|high|xhigh|auto]</sharpen>
                <texture_amount>[disable|xlow|low|medium|high|xhigh|auto]</texture_amount>
                <texture_size>[xsmall|small|medium|large|xlarge|auto]</texture_size>
                <texture_color>[color|gray|auto]</texture_color>
                <single_event_artifact_removal>[disable|xlow|low|medium|high|xhigh|auto]</single_event_artifact_removal>
                <smooth_spatial_filter>[disable|xlow|low|medium|high|xhigh|auto]</smooth_spatial_filter>
                <basic_spatial_filter>[disable|xlow|low|medium|high|xhigh|auto]</basic_spatial_filter>
                <adj_contrast>[Adjustment]</adj_contrast>
                <adj_brightness>[Adjustment]</adj_brightness>
                <adj_saturation>[Adjustment]</adj_saturation>
                <adj_gamma>[Adjustment]</adj_gamma>
                <adj_red>[Adjustment]</adj_red>
                <adj_green>[Adjustment]</adj_green>
                <adj_blue>[Adjustment]</adj_blue>
            </dark_energy_filter>
        </tachyon_parameters>
    </format>
</query>
{
  "query": {
    "userid": "[UserID]", // required
    "userkey": "[UserKey]", // required
    "action": "[Action]", // required
    "source": "[SourceFile]", // required
    "format": {
      "output": "[OutputFormat]", // required
      "framerate": "[FrameRate|copy]",
      "framerate_method": "tachyon", // required
      "tachyon_parameters": {
        "motion_compensation": "[yes|no]",
        "motion_compensation_amount": "[xlow|low|medium|high|xhigh|auto]",
        "motion_compensation_fallback_blend_area": "[small|medium|large|xlarge|auto]",
        "motion_compensation_block_size": "[4|8|16|32|64|128|256|auto]",
        "extreme_motion_compensation_amount": "[xlow|low|medium|high|xhigh|auto]",
        "extreme_motion_compensation_fallback_blend_area": "[small|medium|large|xlarge|auto]",
        "extreme_motion_compensation_block_size": "[4|8|16|32|64|128|256|auto]",
        "allow_pulldown_removal": "[yes|no]",
        "pulldown_removal_residual_combing": "[yes|no]",
        "adjust_for_cartoon": "[yes|no]",
        "pulldown_removal_increased_sensitivity": "[yes|no]",
        "allow_2_3_insertion": "[yes|no]",
        "allow_2_2_insertion": "[yes|no]",
        "allow_double_frames": "[yes|no]",
        "allow_4_6_insertion": "[yes|no]",
        "allow_euro_insertion": "[yes|no]",
        "allow_adaptive_insertion": "[yes|no]",
        "overlay_protect": "[yes|no]",
        "overlay_protect_amount": "[low|high]",
        "subtitle_detect": "[yes|no]",
        "motion_blur": "[yes|no]",
        "progressive_scene_cuts": "[yes|no]",
        "enable_detectors": "[yes|no]",
        "enable_frame_rate_conversion": "[yes|no]",
        "cut_detection_sensitivity": "[Sensitivity]",
        "resample_map": "[ResampleMap]",
        "dark_energy_filter": {
          "enable_optimize": "[yes|no]",
          "power_spatial_filter": "[disable|xlow|low|medium|high|xhigh|auto]",
          "chroma_noise_removal": "[disable|xlow|low|medium|high|xhigh|auto]",
          "sharpen": "[disable|xlow|low|medium|high|xhigh|auto]",
          "texture_amount": "[disable|xlow|low|medium|high|xhigh|auto]",
          "texture_size": "[xsmall|small|medium|large|xlarge|auto]",
          "texture_color": "[color|gray|auto]",
          "single_event_artifact_removal": "[disable|xlow|low|medium|high|xhigh|auto]",
          "smooth_spatial_filter": "[disable|xlow|low|medium|high|xhigh|auto]",
          "basic_spatial_filter": "[disable|xlow|low|medium|high|xhigh|auto]",
          "adj_contrast": "[Adjustment]",
          "adj_brightness": "[Adjustment]",
          "adj_saturation": "[Adjustment]",
          "adj_gamma": "[Adjustment]",
          "adj_red": "[Adjustment]",
          "adj_green": "[Adjustment]",
          "adj_blue": "[Adjustment]"
        }
      }
    }
  }
}

Frame rate conversion parameters

ParameterDescriptionAllowed ValuesDefault Value
motion_compensationEnable motion-compensated frame rate conversion. Defaults to yes; Tachyon only generates new frames when the output frame rate differs from the source. Without motion compensation Tachyon repeats and drops whole frames instead.yes, noyes
motion_compensation_amountAmount of motion compensation applied during frame rate conversion. Lower values interpolate more conservatively on difficult motion.xlow, low, medium, high, xhigh, autoauto
motion_compensation_fallback_blend_areaSize of the region Tachyon blends instead of warping where motion estimation is uncertain. Larger values trade sharpness for fewer halos around moving edges and overlays.small, medium, large, xlarge, autoauto
motion_compensation_block_sizeMotion estimation block size, in pixels. Smaller blocks track fine detail, larger blocks track large objects more stably.4, 8, 16, 32, 64, 128, 256, autoauto
extreme_motion_compensation_amountMotion compensation amount used for frames Tachyon classifies as high motion.xlow, low, medium, high, xhigh, autoauto
extreme_motion_compensation_fallback_blend_areaFallback blend region size used for high-motion frames.small, medium, large, xlarge, autoauto
extreme_motion_compensation_block_sizeMotion estimation block size used for high-motion frames, in pixels.4, 8, 16, 32, 64, 128, 256, autoauto
progressive_scene_cutsTreat scene cuts as progressive, so that no interpolated frame mixes the shots on either side of a cut.yes, nono
enable_detectorsEnable Tachyon's automatic content detectors (cadence, scene and motion analysis). Set to no to convert with motion compensation only, without the automatic decisions the detectors make.yes, noyes
enable_frame_rate_conversionPerform frame rate conversion. Set to no to keep the source timing and use Tachyon only for Dark Energy restoration.yes, noyes
cut_detection_sensitivityScene cut detection sensitivity. 0.0 means automatic; typical values are 0.1–0.35.0–0.50 (auto)
resample_mapPer-segment retime map, as source:destination frame counts. A source length of 0 inserts black frames; a destination length of 0 drops the segment. A single pair converts a known number of source frames into a known number of output frames.src1:dst1[,src2:dst2,...] frame countsnone

Pulldown (telecine) parameters

The allow_* insertion parameters grant Tachyon permission to insert that cadence if its analysis calls for it — they do not force it, and Tachyon may leave a permitted cadence unused. The cadences are named for their field-domain pattern, but they are not restricted to interlaced output: on a progressive target a permitted cadence is applied in the frame domain instead.

ParameterDescriptionAllowed ValuesDefault Value
allow_pulldown_removalAllow detection and removal of a pulldown pattern in the source, recovering the original film frames before conversion.yes, nono
pulldown_removal_increased_sensitivityUse more sensitive detection when removing pulldown. Helps on sources whose cadence is broken by edits.yes, nono
pulldown_removal_residual_combingApply an additional filter pass after pulldown removal.yes, nono
adjust_for_cartoonTell Tachyon the source is animation, which uses cadence detection tuned for drawn content that holds frames.yes, nono
allow_2_3_insertionAllow inserting 3:2 pulldown (standard NTSC telecine), for example 23.976p to 29.97i.yes, nono
allow_2_2_insertionAllow a 1:2 cadence. On interlaced output this is 2:2 insertion, carrying each frame as two fields of the same instant (PSF), which never combs. On progressive output it repeats frames instead, the same as allow_double_frames.yes, nono
allow_double_framesAllow frame doubling, for example 25p to 50p without interpolation. On a progressive target this behaves the same as allow_2_2_insertion.yes, nono
allow_4_6_insertionAllow inserting 4:6 pulldown, for example 25p to 59.94p.yes, nono
allow_euro_insertionAllow inserting Euro pulldown, which reaches the higher rate by repeating one field every 12 frames instead of interpolating. Fields then carry different instants, so the output combs unless it is viewed on an interlaced chain.yes, nono
allow_adaptive_insertionAllow Tachyon to choose the pulldown cadence per scene.yes, nono

Content protection parameters

ParameterDescriptionAllowed ValuesDefault Value
overlay_protectDetect static graphics — score bugs, logos, name bars — and keep them steady while the picture behind them is interpolated.yes, nono
overlay_protect_amountStrength of overlay protection. Use high for sports and other graphics-heavy feeds, low for general content.low, highlow
subtitle_detectDetect burned-in subtitles and protect them the same way.yes, nono
motion_blurSynthesize the motion blur a camera would have captured at the target rate when lowering the frame rate. Set to no to keep the source sharpness.yes, noyes

Dark Energy restoration parameters

The dark_energy_filter group configures Tachyon's Dark Energy noise reduction, sharpen, texture, and color adjustment processing.

ParameterDescriptionAllowed ValuesDefault Value
enable_optimizeEnable Dark Energy restoration.yes, nono
power_spatial_filterMain noise reduction amount.disable, xlow, low, medium, high, xhigh, autonone
chroma_noise_removalChroma noise removal amount.disable, xlow, low, medium, high, xhigh, autonone
sharpenSharpen amount.disable, xlow, low, medium, high, xhigh, autonone
texture_amountAmount of synthesized grain (texture) added.disable, xlow, low, medium, high, xhigh, autonone
texture_sizeSize of the synthesized grain.xsmall, small, medium, large, xlarge, autonone
texture_colorColor of the synthesized grain.color, gray, autonone
single_event_artifact_removalRemoval of single-frame artifacts such as dust and sparkle.disable, xlow, low, medium, high, xhigh, autonone
smooth_spatial_filterSmooth spatial filter amount.disable, xlow, low, medium, high, xhigh, autonone
basic_spatial_filterBasic spatial filter amount.disable, xlow, low, medium, high, xhigh, autonone
adj_contrastContrast adjustment.-1.0–1.0none
adj_brightnessBrightness adjustment.-1.0–1.0none
adj_saturationSaturation adjustment.-1.0–1.0none
adj_gammaGamma adjustment.-1.0–1.0none
adj_redRed channel adjustment.-1.0–1.0none
adj_greenGreen channel adjustment.-1.0–1.0none
adj_blueBlue channel adjustment.-1.0–1.0none

Typical conversions

Tachyon's automatic mode already handles the conversion; the parameters below are the ones worth setting for each case. Set framerate to the target rate in every case.

SourceTargetRecommended parameters
23.976p / 24p film25pdefaults
23.976p / 24p film25i (PSF)allow_2_2_insertion: yes + force_interlaced: tff
23.976p / 24p film29.97iallow_2_3_insertion: yes + force_interlaced: tff
25p50pallow_double_frames: yes (frame double instead of interpolation)
25p59.94pallow_4_6_insertion: yes
29.97i / 59.94i video50p, 25pallow_pulldown_removal: yes
29.97i telecined film23.976p, 25pallow_pulldown_removal: yes
29.97i telecined animation23.976p, 25pallow_pulldown_removal: yes + adjust_for_cartoon: yes
Any source with static graphicsanyoverlay_protect: yes, overlay_protect_amount: high for sports
Any source with burned-in subsanysubtitle_detect: yes
Any source, restoration onlysame rateframerate: copy + enable_frame_rate_conversion: no + dark_energy_filter

When lowering the frame rate, Tachyon synthesizes the motion blur a camera would have captured at the lower rate. Set motion_blur to no to keep the source sharpness instead.

23.976p film to 25i (PSF) with protected graphics

{
  "output": "apple_prores",
  "type": "apch",
  "framerate": "25",
  "framerate_method": "tachyon",
  "deinterlacing": "no",
  "force_interlaced": "tff",
  "tachyon_parameters": {
    "allow_2_2_insertion": "yes",
    "overlay_protect": "yes",
    "overlay_protect_amount": "low",
    "subtitle_detect": "yes"
  }
}

Telecined 29.97i master to 25p

{
  "output": "mp4",
  "framerate": "25",
  "framerate_method": "tachyon",
  "deinterlacing": "no",
  "tachyon_parameters": {
    "allow_pulldown_removal": "yes"
  }
}