
    iJ                        U d Z ddlmZ ddddddZd	ed
<   d
d	iZd	ed<    eej                               Zded<   ddZy)u   ffmpeg 모션 효과 필터 표현식 모듈.

IDS Phase 5 — 모션 카드뉴스 (HTML→MP4)
5가지 효과: fade / slide / zoom / dissolve / sequence
    )annotationszM[{i}:v]fade=t=in:st=0:d={fade_d},fade=t=out:st={fade_out_st}:d={fade_d}[v{i}]zZ[{i}:v]crop={w}:{h}:0:0,overlay=x='if(lte(t,{duration}),t/{duration}*{w}-{w},0)':y=0[v{i}]z[{i}:v]scale=iw*{zoom_scale}:ih*{zoom_scale},crop={w}:{h}:(iw-{w})/2:(ih-{h})/2,zoompan=z='min(zoom+0.001,1.15)':d={total_frames}:s={w}x{h}[v{i}]zW[{i}:v][{j}:v]xfade=transition=dissolve:duration={xfade_d}:offset={xfade_offset}[v{ij}]CONCAT_DEMUXER)fadeslidezoomdissolvesequencezdict[str, str]EFFECTS__annotations__zset[str]_VALID_EFFECTSc                h    ||f}| t         vrt        d|  dt        t                      t        |    S )u  효과 이름에 해당하는 ffmpeg 필터 템플릿 문자열을 반환합니다.

    Args:
        effect: 효과 이름 ('fade', 'slide', 'zoom', 'dissolve', 'sequence')
        fps: 초당 프레임 수 (미사용, 서명 호환성용)
        duration: 프레임당 지속 시간(초) (미사용, 서명 호환성용)

    Returns:
        ffmpeg 필터 템플릿 문자열

    Raises:
        ValueError: 알 수 없는 효과 이름인 경우
    u   알 수 없는 효과: 'u   '. 지원 효과: )r   
ValueErrorsortedr
   )effectfpsduration_s       8/home/jay/workspace/skills/motion-cardnews-ko/effects.pyget_effect_filterr      s@     	XA^#3F8;MfUcNdMefgg6?    N)r   strr   intr   floatreturnr   )	__doc__
__future__r   r
   r   setkeysr   r    r   r   <module>r       s^   
 # \i `i   $-.>"? ?w||~. .r   